我想将两种颜色相乘,其成分为byte
,但我遇到了不一致的结果。
当组件为float
时,它非常简单:
float a = 1.0f;
float b = 1.0f;
float c = a * b;
当组件为byte
时,我依旧记得有一些位移,但我的公式显然缺少一些东西:
byte a = 255;
byte b = 255;
byte c = (byte)((a * b) >> 8);
// 255 * 255 = 65025 then 65025 >> 8 = 254
// obviously, adding 1 to the result is just wrong
注意:
我不能使用来自流行框架(如Forms或WPF)的Color
类型,因为我的项目充当了一个可以从不同框架重用的抽象层。
问题:
使用位移乘以byte
颜色的正确算法是什么?