前の記事「図形を描画する(1)」にて四角形と円の描画についてご紹介しました。
今回は四角形、円以外に標準で用意されている図形の線、多角形の描画方法についてご紹介します。
今回は線を描画するLineと多角形を描画するPolygonを使用方法を紹介します。
ここで紹介する図形描画は静的な図形描画ではなく(XAMLで部品を置く)ではなく動的な図形描画(プログラム側で生成と表示)する方法をご紹介します。
詳しい内容は続きを御覧ください。
線を描画する
まず線を描画するにはLineクラスを生成し線を描画する始点、終点、色、線の太さの設定を行います。
Lineの主に設定するプロパティは以下の表の通りになります。
[table “224” not found /]
例えば線の始点を(100,100)とし終点を(200,200)を結ぶ線分で、色を黄色、線の太さを5ptと設定した図形を描画する場合は下記のようになります。
Line li = new Line();
li.HorizontalAlignment = HorizontalAlignment.Left;
li.VerticalAlignment = VerticalAlignment.Top;
li.Stroke = new SolidColorBrush(Colors.Yellow);
li.X1 = 100;
li.Y1 = 100;
li.X2 = 200;
li.Y2 = 200;
li.StrokeThickness = 5;
そして描画を行うにはレイアウトの部品を親として生成したLineクラスを子供として追加します。
例えばXAMLファイルに下記のように書かれていた場合にはContentPanelに生成したLineクラスを追加します。
この場合ContentPanelを親、Lineクラスを子として扱うことになります。
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"></Grid>
追加する方法は下記のようにして行います。
ContentPanel.Children.Add(li);
多角形を描画する
まず多角形を描画するにはPolygonクラスを生成し色、枠線の色、横の長さ、縦の長さ、形を設定を行います。
Polygonの主に設定するプロパティは以下の表の通りになります。
[table “225” not found /]
例えば三角形の横の長さを100px、縦の長さを100px、色を青色、枠線の色を紫、枠線の太さを2ptの図形を描画する場合は下記のようになります。
PointCollection myPointCollection = new PointCollection();
myPointCollection.Add(new Point(0, 0));
myPointCollection.Add(new Point(0, 1));
myPointCollection.Add(new Point(1, 1));
Polygon myPolygon = new Polygon();
myPolygon.Points = myPointCollection;
myPolygon.Fill = new SolidColorBrush(Colors.Blue);
myPolygon.Width = 100;
myPolygon.Height = 100;
myPolygon.Stretch = Stretch.Fill;
myPolygon.Stroke = new SolidColorBrush(Colors.Purple);
myPolygon.StrokeThickness = 2;
そして描画を行うにはレイアウトの部品を親として生成したPolygonクラスを子供として追加します。
例えばXAMLファイルに下記のように書かれていた場合にはContentPanelに生成したPolygonクラスを追加します。
この場合ContentPanelを親、Polygonクラスを子として扱うことになります。
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"></Grid>
追加する方法は下記のようにして行います
ContentPanel.Children.Add(myPolygon);
サンプルとして線と、多角形を描画するサンプルを用意しました。
■MainPage.xaml
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"></Grid>
■MainPage.xaml.cs
public void draw()
{
Line li = new Line();
li.HorizontalAlignment = HorizontalAlignment.Left;
li.VerticalAlignment = VerticalAlignment.Top;
li.Stroke = new SolidColorBrush(Colors.Yellow);
li.X1 = 100;
li.Y1 = 100;
li.X2 = 200;
li.Y2 = 200;
li.StrokeThickness = 5;
ContentPanel.Children.Add(li);
PointCollection myPointCollection = new PointCollection();
myPointCollection.Add(new Point(0, 0));
myPointCollection.Add(new Point(0, 1));
myPointCollection.Add(new Point(1, 1));
Polygon myPolygon = new Polygon();
myPolygon.Points = myPointCollection;
myPolygon.Fill = new SolidColorBrush(Colors.Blue);
myPolygon.Width = 100;
myPolygon.Height = 100;
myPolygon.Stretch = Stretch.Fill;
myPolygon.Stroke = new SolidColorBrush(Colors.Purple);
myPolygon.StrokeThickness = 2;
ContentPanel.Children.Add(myPolygon);
}