【发布时间】:2016-03-17 01:12:27
【问题描述】:
我有一个位图,在将多个图层合成到一个目标位图中时,我需要将其用作图像蒙版。图像掩码是黑白图像,其中黑色指定应该不绘制的像素,白色从源位图中绘制像素。
像素均为 32 位 ARGB 格式。
如上所述,掩码中的像素是黑色 (0xFF000000) 或白色 (0xFFFFFFFF)。
我正在尝试一种快速有效的方法来将掩码像素与位图中的像素组合起来,以便仅使用位操作进行绘制。如果用于裁剪的黑色像素的 alpha 值为 0,那将是微不足道的——然后我可以对遮罩像素和位图像素进行 AND 运算。
是否有任何类型的位饱和指令,或类似的东西?我的想法是这样的:
uint mask = maskPixel & 0x00FFFFFF;
saturate(mask);
// If the maskPixel was black, mask will be all 0s, so the result of saturation is still all 0s.
// If the maskPixel was white, mask will be 0x00FFFFFF, so the saturation will result in 0xFFFFFFFF
有什么想法吗?
【问题讨论】:
-
稍微详细说明一下,我正在考虑使用遮罩像素的 RGB 值来设置 alpha 值。
-
详细说明你的问题,不要在评论中。
标签: c++ graphics bitmap bitwise-operators mask