2012-10-08 27 views
0

我想在疊加混合效果的圖像上書寫文本。不是簡單的透明度,而是將圖像的像素與文本的顏色混合。如何在C中使用疊加效果在圖像上編寫文本#

我有這個功能,它將文字寫在圖像上,但這只是使用一個簡單的透明度。

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

您在尋找什麼樣的效果?透明度也匹配'混合圖像的像素和文字的顏色'。 – xxbbcc

+0

我想要一個類似於photoshop疊加混合模式的效果。基本顏色不會被替換,但會與混合顏色混合以反映原始顏色的明暗。 –

+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

相關問題