1

画面にいくつかのボタンを描いています。それぞれ色は異なりますが、形は同じで、Photoshop でデザインされ、あらゆる種類の反射と輝きがあります。
形状の 1 つのビットマップを使用し、その色をプログラムで変更して、すべての反射と影を維持したいと考えています。これは私が今していることです:

  1. 形状を ARRGB_8888 ビットマップに取得します (すべての色が灰色の色合いであっても)
  2. ビットマップ ピクセルを 3 つのバッファにコピーします: イメージ、ハイライト、シャドウ
  3. 基準グレーシェードは RGB[128,128,128] です。
  4. ハイライト バッファーで、参照 (+ しきい値) より下のすべてのピクセルをゼロにします。
  5. Shadows バッファーで、参照 (- しきい値) を超えるすべてのピクセルをゼロにします。
  6. ハイライトおよびシャドウ バッファから、ハイライトおよびシャドウ ビットマップを作成します。

  7. PorterDuffColorFilterオン モード MULTIPLYを使用して元のグレースケール イメージを描画します。

  8. Shadows ビットマップと XferMode DARKEN を使用して、影の上に描画します。
  9. Highlights ビットマップと XferMode LIGHTEN を使用して、ハイライトの上に描画します。

結果は得られますが、最終的なボタンの色はターゲットの色ではなく、128 を参照する MULTIPLY モードがすべてのコンポーネントを半分にカットするため、より暗い色合いであることに気付きました。
参照をより白いグレーの色合いに設定しようとしましたが、ハイライトが飽和してしまいます。
上記のステップ 7 で SRC_IN を使用しようとしましたが、ハイライトでもシャドウでもない領域でのみターゲット カラーを取得します。

結果を見る:

結果

何を質問する必要があるのか​​ わかりませんが、正確なターゲットカラーとそのハイライトとシャドウを備えたボタンを取得したいと考えています. ハイライトとシャドウのマスクを間違って生成しているか、間違った描画モードを使用している可能性があります。または多分それは何か他のものです。

4

0 に答える 0