我嘗試將argb值轉換爲rgb值,而不會丟失從其背景獲得的信息。例如: 例如:背景是黑色的,argb是(150,255,0,0),結果我不想有一種棕色。將ARGB轉換爲RGB而不丟失信息
有沒有處理這個問題的機會?
我嘗試將argb值轉換爲rgb值,而不會丟失從其背景獲得的信息。例如: 例如:背景是黑色的,argb是(150,255,0,0),結果我不想有一種棕色。將ARGB轉換爲RGB而不丟失信息
有沒有處理這個問題的機會?
您可以計算
foreground * alpha + background * (1-alpha)
爲渠道紅色,綠色和藍色的新顏色。請注意,我在表達式中使用了一個縮放到0
到1
的alpha
。
public static Color RemoveAlpha(Color foreground, Color background)
{
if (foreground.A == 255)
return foreground;
var alpha = foreground.A/255.0;
var diff = 1.0 - alpha;
return Color.FromArgb(255,
(byte)(foreground.R * alpha + background.R * diff),
(byte)(foreground.G * alpha + background.G * diff),
(byte)(foreground.B * alpha + background.B * diff));
}
從http://mytoolkit.codeplex.com/SourceControl/latest#Shared/Utilities/ColorUtility.cs
你可以拿我的例子來解釋呢?無法想象我應該如何從這個等式中得到3個數值。謝謝 – roqstr 2012-03-30 16:52:33
非常棒,謝謝! – roqstr 2012-03-30 17:00:56