我想为黑白图像着色 .
为此,我使用ColorMatrix . 例如,当我想将图像着色为红色时,我使用此ColorMatrix:
1,0,0,0,0,
0,1,0,0,0,
0,0,1,0,0,
0,0,0,1,0,
1,0,0,0,0,
现在我想从颜色图表中选择一种颜色,例如从这样的颜色图表中选择颜色:
我的计划是使用GetPixel检索光标下的颜色并将此RGB值转换为ColorMatrix .
当我使用红色的GetPixel时,我会得到
R: 255
G: 0
B: 0
如何将Red值255转换为ColorMatrix值?这将是1.0 . 如果红色值为127,则该值为0.5
我应该简单地使用“三个规则”来确定1.0的值,或者应该如何处理?
1 回答
首先,我认为您应该阅读ColorMatrix类,并且可能会更新您对矩阵的理解(尽管
ColorMatrix
文档为您提供了足够的信息,您不需要理解矩阵数学) .我们来看看你的矩阵:
此矩阵将红色,绿色,蓝色和alpha分量缩放1,然后将1添加到红色分量,将0添加到绿色,蓝色和alpha分量 .
我不认为这真的是你想要的 . 为了使图像着色,我认为最好将图像RGB值相乘而不是添加它们 . 否则,如果您的黑白图像的像素为白色(即RGB 1,1,1),那么当您尝试对其进行着色时,它将保持白色,此时它应该真正采用您应用的颜色 .
让我们更一般地看看矩阵,看看它如何影响像素颜色:
S
代表"scale",T
代表翻译 . 您的红色组件将乘以Sr
然后添加Tr
,您的绿色组件将乘以Sg
然后添加Tg
,您的蓝色组件将乘以Sb
然后添加Tb
,并且您的alpha分量将乘以Sa
然后添加Ta
.因此,要构建一个矩阵来为您的图像着色,您可以这样做:
您现在可以使用
ColorMatrix
来为图像着色 .