【发布时间】:2014-09-16 11:00:48
【问题描述】:
是 .NET Color 结构从非预乘 alpha 到预乘 alpha 的转换:
public static Color PremultiplyAlpha(Color pixel) {
return Color.FromArgb(
PremultiplyAlpha_Component(pixel.A, pixel.A),
PremultiplyAlpha_Component(pixel.R, pixel.A),
PremultiplyAlpha_Component(pixel.G, pixel.A),
PremultiplyAlpha_Component(pixel.B, pixel.A));
}
private static byte PremultiplyAlpha_Component(byte source, byte alpha) {
return (byte)((source * alpha) / byte.MaxValue);
}
特别是,除了 RGB 分量之外,预乘 alpha 分量是否正确?
【问题讨论】:
-
根据this article 是不正确的。
-
如果您指的是
System.Drawing.PixelFormat,例如Format32bppPArgb,在线文档说the red, green, and blue components are premultiplied, according to the alpha component,但不是 alpha 组件本身。