我寫了這兩種方法來完成這項工作了。您可以設置任何想要將圖像與其混合的顏色。
private void ApplyColor(Bitmap bm, Color userColor)
{
if (bm==null)
return;
// pixels loop
for (int i = 0; i < bm.Width; i++)
{
for (int j = 0; j < bm.Height; j++)
{
// get current pixel
Color curPix = bm.GetPixel(i, j);
Color curPixColor = Color.FromArgb(curPix.A, curPix.R, curPix.G, curPix.B);
// get result color by blending
Color resultColor = Blend(curPixColor, userColor, ColorMixFactor);
// set pixel color
bm.SetPixel(i, j, resultColor);
}
}
}
public static Color Blend(Color srcColor, Color dstColor, double amount)
{
// restrict black (dark) color from being affected by the blending
var br = srcColor.GetBrightness();
if (br < BrightnessToAvoid)
return srcColor;
// get all 4 color channels
var r = (byte) ((srcColor.R*amount) + dstColor.R*(1 - amount));
var g = (byte) ((srcColor.G*amount) + dstColor.G*(1 - amount));
var b = (byte) ((srcColor.B*amount) + dstColor.B*(1 - amount));
var a = srcColor.A;
// get blended color
return Color.FromArgb(a, r, g, b);
}
不明確。這些黃色圖片是否可以或有問題?如果有錯誤,那麼使用的是什麼代碼? –
你想擺脫RGB中的藍色部分? – Ralf
爲了實現*類似*(第二幅圖像),您需要做有色圖像(第三,幾乎可以,也許嘗試不同的顏色?)和「添加」它掩蓋第一個圖像(刪除與黑色不同的一切圖像並且只在着色的圖像上放置這些黑色像素),以具有黑色正方形和黑色輪廓。 – Sinatr