我一直在尝试Change HUE/Saturation
在 EFG 网站上找到的示例:http ://www.efg2.com/Lab/Library/Delphi/Graphics/Color.htm
我想使用该示例中的技术来更改某些位图的颜色值(用于 TImage)。我面临一个问题,那就是具有透明位图的 TImage;我不希望背景颜色改变它的 HUE,而只是改变实际的图像数据。
拿这个我们可以使用的示例图像(尽管可以使用任何具有透明度的图像):
Change HUE/Saturation
从顶部的链接下载演示。- 现在将上面的按钮图像加载到 ImageOriginal 中。
- 将增量饱和度设置为 1。
- 运行项目。
一些输出结果:
我想在这里发生的是保持原始背景颜色(由最左下角的像素定义),并且只调整图像其余部分的色调。因此,输出结果实际上看起来像这样(在 Paint.NET 中编辑):
请允许我使用另一个示例图像进行测试,其中包含更多图像数据:
与之前的第一个图像样本一样,结果可能类似于:
当我想要的结果应该是这样的:
我的一个想法是在更改 HUE 之后,用原始颜色替换最左下角的颜色,但我不确定这是否是正确的方法,即使是我也不确定如何替换颜色X 代表另一种颜色。(图形和数学超出了我的范围)。
例如,如果我在米奇的耳朵上画了两个蓝色圆圈(蓝色是最左下角像素的原始透明颜色)并且还给他的眼睛上色:
再次更改 HUE 可能如下所示:
实际上它应该是这样的:
简单地说,我想改变图像的色调,无论是通过 EFG 演示中使用的方法还是其他解决方案。当 HUE 改变时,由最左下像素定义的透明颜色不应改变,这应该与示例图像中所示的保持相同。
如何在保留背景颜色的同时更改位图的 HUE?