我目前正在制作一个颜色选择器(非常标准,与当前较少选项的photoshop几乎相同:仍处于早期阶段)。这是实际的东西的图片:http://i.stack.imgur.com/oEvJW.jpg检索颜色选择器上的像素颜色的问题
问题是:检索颜色选择器(小的,另一个是鼠标)下的像素的颜色,我有这条线,我认为会做到这一点:
_currentColor = Convert.hsbToHex(new HSB(0,
((_colorSelector.x + _colorSelector.width/2)*100)/_largeur,
((_colorSelector.y + _colorSelector.height/2)*100)/_hauteur
));
只是为了澄清的代码,我简单地使用选择的坐标,以上的Y轴创建一个新的HSB颜色(饱和度被表示在X轴上和亮度(值)这种颜色选择器)。然后将此HSB颜色转换为十六进制,并将其分配给属性。现在色相始终设置为0,但这不相关,因为我只使用纯红色进行测试。
这部分做什么,我想,但返回的颜色值反转的大部分角落: 为(0,0),它应该返回0XFFFFFF,但它返回0x000000处,而不是 (256,0),这是应该返回为0xFF0000,但它不是 返回0x000000处为(0,256),它应该返回0x000000处,但它返回0XFFFFFF代替 为(256,256),它应该返回0x000000处,但它返回为0xFF0000,而不是
我在代码中尝试了很多变体,但我似乎无法正确修复它。任何回复/建议都比欢迎!
它在这种情况下并没有真正改变任何东西,问题实际上是我无法确定的角点值的倒置。 – Sheavi 2010-09-28 23:16:08
在这种情况下,发布'hsbToHex'的代码将是唯一的方法来发现错误,或者这是一个内置函数? – schnaader 2010-09-28 23:18:48
它是我制作的一个功能,但我已经对它进行了测试,并将其与photoshop的值进行了比较。此外,它只是您日常的转换算法,您可以在网上找到从HSB到RGB,然后二进制转换以将RGB转换为十六进制。 – Sheavi 2010-09-28 23:24:22