2012-10-08 4 views
0

오버레이 혼합 효과가있는 이미지 위에 텍스트를 쓰고 싶습니다. 단순한 투명도가 아니라 이미지 픽셀을 텍스트 색상과 혼합하십시오.오버레이 효과가있는 이미지에 텍스트를 쓰는 방법 #

이미지 위에 텍스트를 쓰는이 기능이 있지만 단순한 투명도를 사용합니다.

grPhoto.DrawString(strText,  //string of text 
    crFont,       //font 
    semiTransBrush,     //Brush 
    new PointF(xCenterOfImg,yPosFromBottom), //Position 
    StrFormat);        //Text alignment 
+1

어떤 효과가 있습니까? 투명도는 '이미지의 픽셀을 텍스트의 색상과 혼합합니다'와도 일치합니다. – xxbbcc

+0

포토샵 오버레이 혼합 모드와 같은 효과를 원합니다. 기본 색상은 대체되지 않지만 혼합 색상과 혼합되어 원래 색상의 명암을 반영합니다. –

+0

일부 이미지의 도움으로 오버레이 효과를 표시 할 수 있습니까? –

답변

1

오버레이 혼합을 사용할 때 픽셀 값을 계산하는 데 사용되는 숫자는 formula that Photoshop입니다. 블렌딩 중에 각 픽셀을 계산해야 할 수도 있습니다. GDI +에 블렌딩에 대한 특정 지원이 있다고 생각하지 않습니다. (내가 틀렸어도, GDI +를 사용한 이후로 한동안되었습니다.)

Paint.NET은 오버레이 블렌딩 구현에 비슷한 알고리즘을 사용합니다. 반사경이 아이디어를 줄 수도 있습니다.

+0

하지만 어떻게하면 더 간단한 방법으로 텍스트를 만들 수 있습니까? paint.net은 복잡한 레이어를 사용하고 필자에게 필요한 필터를 너무 복잡하게 만듭니다. –

+0

@MarioM 당신도 똑같이해야 할 것입니다. 먼저 텍스트를 투명한 비트 맵에 렌더링 한 다음이 비트 맵을 원래 비트 맵에 블렌드하십시오. 이 블렌딩 프로세스 중에 코드는 최상위 레이어 (텍스트 비트 맵)의 모든 픽셀을 반복하고 텍스트 비트 맵 및 원래 비트 맵의 ​​픽셀에 수식을 적용하여 최종 픽셀을 계산해야합니다. 주어진 픽셀에 대한 결과가 무엇이든 그 위치에있는 출력 픽셀이 있습니다. 이 기사는 유용 할 수 있습니다 : http://www.codeproject.com/Tips/240428/Work-with-bitmap-faster-with-Csharp – xxbbcc

+0

@MarioM 특정 블렌딩 효과를 원한다면 더 간단한 방법이 있다고 생각하지 않습니다. . 간단한 투명성이 적용되는 텍스트 색상을 조정할 수 있습니다. – xxbbcc

관련 문제