SourceChord

C#とXAML好きなプログラマの備忘録。最近はWPF系の話題が中心です。

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