前の記事「図形を描画する(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); }