XAMLで色相のグラデーションを描画
XAMLで色相のグラデーションのブラシを作ろうとしたのですが、
よくよく考えたら、XAMLのLinearGradientBrushなどは、RGB値で色の指定をするので、色相のグラデーションは作成できません。
(H:0,S:1,V:1)〜(H:360,S:1,V:1)までのグラデーション、とか定義できないし。。。
でもBlendやVisualStudioのXAMLエディタでは、ちゃんと色相のグラデーションのバーが表示されてます。
これ、どうやって描いてるのかな・・と気になって、Snoopで見てみました。
どうやら、LinearGradientBrushで7色のグラデーションを作って描画してるらしい。
ということで、さっそく真似てみました。
ブラシの定義
<Window.Resources> <LinearGradientBrush x:Key="RainbowBrush" StartPoint="0,0" EndPoint="1,0"> <GradientStop Color="#FFFF0000" Offset="0"/> <GradientStop Color="#FFFFFF00" Offset="0.167"/> <GradientStop Color="#FF00FF00" Offset="0.333"/> <GradientStop Color="#FF00FFFF" Offset="0.5"/> <GradientStop Color="#FF0000FF" Offset="0.667"/> <GradientStop Color="#FFFF00FF" Offset="0.833"/> <GradientStop Color="#FFFF0000" Offset="1"/> </LinearGradientBrush> </Window.Resources>
結果
うん。いい感じ。
調べてみたら、StackOverFlowでも同じような質問&回答が書かれていました。
http://stackoverflow.com/questions/7584805/create-a-hue-color-bar