反対色を作る~カラーパレット(リストボックス)の文字色を見やすくする
- 2011.10.13 Thursday
- 18:07
カラーリスト(パレット 色見本)のような物をリストボックスを使って、作ろうと考える。
リストボックスの描画は、おなじみDOBON.NETにあるので、
これをリストの背景を該当の塗りつぶして、色名称(色の名前)を表示する感じに応用する。
問題は、表示する色名称、文字列の色。
同じ色では見えないし、適当な固定色をあてたとしても、
色によっては、見える見えないが発生してしまう。
なので、単純に考えて、パレット色に対して見やすい(反対の)色にするのがいいというのが、今回の話題。
探していたら、「背景色から文字色を算出したい」という内容の投稿があった。
要するに、明度差を求めて、結果が125以上(上のソースでは127.5)で
黒か白かを分ける感じである。
VB2008に翻訳すると、
|
という感じである。
リストボックスに適用してみると
白黒以外を計算で求めることもできるのだが、
見た目にも白黒が一番はっきりしている感じだ。
追記
たまに、このページが検索されるのだが、
この記事は、反対と言うよりも、背景色から適当な色を割り出すと行った感じの記事なので、
反対色で調べた方はちょっと内容が違うと思われたに違いない。
反対色、いわゆる補色の計算式についてさらに調べると、次のページを見つけた。
補色のRGB値を計算する
こちらの式はイラストレータで使われている補色式のようです。
VBでざっくり書くと
|
ってところでしょうか。
ついでに、反転は
|
という感じ。
実行結果
参考
ListBoxの項目を自分で描画する
背景色から文字色を算出したい
文字色と背景のコントラスト
補色のRGB値を計算する
カラーの反転色または補色への変更