LinearGradientBrush

ブラシに任意の(帯状)グラデーションを指定して、描画する方法を紹介します。



>ipy.exe exBrush.py

このアプリケーションを起動すると、ウィンドウが現れます。1)タブ LinearGradientBrush をクリックすると、2)それを使って描画した図形が表示されます。
楕円や多角形の内部に、黄色から緑へと連続して「帯状に」変化するグラデーションが描かれているのが分かります。このとき、星形の中央は多角形の内部とは見なされないので、そこには何も描かれません。

マークアップと分離コード:LinearGradientBrush

マークアップと同様の結果が得られる、分離コードについて解説します。


<!-- exBrush.xaml -->


<Ellipse
Stroke="Blue" StrokeThickness="2"
Width="100" Height="50">







<Polygon
Stroke="Blue" StrokeThickness="2"
Points="0,28 80,28 12,80 40,0 68,80">









マークアップでは、<LinearGradientBrush ... に続いて、さまざまなプロパティーを指定します。これを分離コードでは、次のように記述します。


# exBrush.py
def _linearGradientBrush(self):
brush = LinearGradientBrush()
for color, offset in [
("Yellow", 0.0), # follow me ..)^.^)
("Green" , 1.0),
]:
brush.GradientStops.Add(GradientStop(
Color=getattr(Colors, color),
Offset=offset,
))
return brush

複数の GradientStop を指定すると、グラデーションの変化を制御できます。ここでは、Yellow/Green の2つを指定しているだけなので、その間を連続的に変化します。試しに、コメント # follow me ... )^.^) のある行に続いて、任意の項目を追加してみると、その違いが分かります。
マークアップでは、文字列("Yellow" など)を使って色情報を指定できますが、分離コードでは、クラス属性(Colors.Yellow など)を使って指定する必要があります。


Previous|1/5|Next