> 白、又は黒に近いほうに変換するほうが見やすいようです。 この場合、反転色を求める必要ないですね。
> If dblRevAVG > dblHalf Then これを逆にすれば反転色を求める必要は無いと思います。
> p.s 緑のときは白が返されるのですが、この組み合わせだけ > 見難いです。何か改善の名案がございましたらよろしく > お願いいたします。 この辺は難しいですね。 昔、人が見やすい2色は色相環で180度回転させた位置の色だと 聞いたことがあります。 ただし、実際は白・黒で返してやったほうが見やすいのかも知れな いですね。 輝度を抽出してそれを閾値によって白・黒を判断するとかかなぁ。 0.299*R + 0.587*G + 0.114*B でグレースケールに変換できるので(輝度を求める) これが128(閾値)以上なら黒、以下なら白とか。 これでうまくいかなかったら、 輝度を求めるところで、RGBそれぞれの重み付けの部分の 係数や閾値を変えるとかしてみたり。
どうしてもうまくいかなかったら、 3次元配列を用意してあらかじめ、色を決めておくのが 確実かな。 static lngColorMap(32, 32, 32) as long lngColorMap(0,0,0) = rgb(255,255,255) : CnvWhiteOrBlack = lngColorMap(r/16,g/16,b/16) これも、いやな手段ですけどね。
ユーザに背景色を指定させるのだから、前景色の指定させられない かな。(出来ないんでしょうね。きっと。)
あとは、任意の色に対応するのではなく、ある程度用意した 色から選んでもらうか。
すみません、最後のほうは逃げで参考にならなかったですね。
|