Change HUE/Saturation
私はEFGのWebサイトにある例を試しています: http ://www.efg2.com/Lab/Library/Delphi/Graphics/Color.htm
その例にある手法を使用して、一部のビットマップ(TImageで使用される)の色の値を変更したいと思います。私が直面している問題が1つあります。それは、透明なビットマップを持つTImagesにあります。背景色で色相を変更するのではなく、実際の画像データだけを変更したいと思います。
使用できるこのサンプル画像を取得します(ただし、透明度のある任意の画像を使用できます)。
Change HUE/Saturation
上部のリンクからデモをダウンロードします。- 次に、上のボタン画像をImageOriginalにロードします。
- DeltaSaturationを1に設定します。
- プロジェクトを実行します。
いくつかの出力結果:
ここで実行したいのは、元の背景色(左下の一番下のピクセルで定義)を維持し、画像の残りの部分の色相のみを調整することです。したがって、出力結果は実際には次のようになります(Paint.NETで編集)。
より多くの画像データを含む別のサンプル画像を使用してテストすることを許可します。
最初の画像サンプルの場合と同様に、結果は次のようになります。
私が望む結果が次のようになるとき:
色相を変更した後、左下の一番下の色を元の色に置き換えるというアイデアがありましたが、これが正しいアプローチであるかどうかはわかりません。また、色を置き換える方法がわかりません。別の色のX。(グラフィックスと数学は私を超えています)。
たとえば、ミッキーの耳に2つの青い色の円を描き(青は左下のピクセルからの元の透明な色でした)、彼の目を着色した場合:
HUEを再度変更すると、次のようになります。
実際には次のようになります。
簡単に言えば、EFGデモで使用された方法によるものか、別のソリューションによるものかを問わず、画像の色相を変更したいと思います。HUEを変更しても、左下のピクセルで定義されている透明色は変更しないでください。これは、サンプル画像に示されているものと同じままである必要があります。
背景色を保持したまま、ビットマップの色相を変更するにはどうすればよいですか?