我必须阅读rgb (ex rgb(255,0,0) --> red)
中具有文本颜色定义的一些HTML,但是我想在HTML代码中搜索所有类似颜色(ex rgb(240, 20, 20) --> similar to red)
或与rgb(223,12,5)…
类似的其他颜色,我尝试进行转换以此模式在COLORREF
中显示:
col := RGB(240, 20, 20) --> result = 1316080
col := RGB(255, 0, 0) --> result = 255
但这不是正确的方法……您有任何想法让连续的值(范围)具有相似的颜色吗?
谢谢
答案 0 :(得分:1)
我通过以下方式解决了类似的任务。
1)我构建了一个包含用于首选颜色空间的RGB组件的结构。它可以是标准的TColor
值,或者您可能想使用Wiki中的颜色定义(我使用了后者)。因此,我的所有颜色都类似:TArray<TRGB>
。
2)分析了我要分配给颜色空间中的颜色的颜色RGB分量-获得red1, green1, blue1
。
3)对于每种颜色,我计算出与颜色空间中的颜色的距离为:
dbl_test_red = Sqr(red - red1);
dbl_test_green = Sqr(green - green1);
dbl_test_blue = Sqr(blue - blue1);
distance := dbl_test_blue + dbl_test_green + dbl_test_red;
最小距离将对应于最接近的颜色。 该算法没有考虑到Alpha通道,但对我来说效果很好。