【发布时间】:2012-04-14 09:18:22
【问题描述】:
我尝试将 argb 值转换为 rgb 值,而不会丢失从他的背景中获得的信息。 例如:背景是黑色,argb 是 (150,255,0,0),因此我不想有一种棕色。
有没有办法解决这个问题?
【问题讨论】:
标签: c# windows-phone-7 colors
我尝试将 argb 值转换为 rgb 值,而不会丢失从他的背景中获得的信息。 例如:背景是黑色,argb 是 (150,255,0,0),因此我不想有一种棕色。
有没有办法解决这个问题?
【问题讨论】:
标签: c# windows-phone-7 colors
你可以计算
foreground * alpha + background * (1-alpha)
作为红色、绿色和蓝色通道的新颜色。请注意,我在表达式中使用了alpha 缩放为0 到1。
【讨论】:
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
【讨论】: