グラフィックの描画 (5/5)
作成:2011-10-24 08:08
更新:2011-10-24 08:08
更新:2011-10-24 08:08
■直線と多角形の描画
四角形や楕円と異なり、直線や多角形などの図形は位置や幅などのプロパティを使いません。これらの基本について説明しましょう。
まずは、実際にサンプルを見てみましょう。下のリスト欄は、直線と三角形を表示する例です。ここでは先ほどと同じように、drawメソッドに描画の処理をまとめてあります。ここでは青地浴泉と、赤い三角形を表示してあります。では、それぞれのポイントを説明しましょう。
●直線の設定
●多角形の設定
つまり、PointsプロパティにPointCollectionインスタンスを設定し、これにPointで位置情報のインスタンスを作ってはAddで組み込む、ということを繰り返して、多角形の各頂点の位置情報を組み込んでいけばいいのです。Pointは、newする際、横位置と縦位置を引数に指定して作ります。やはり、これらで頂点の情報を設定したら、Width/Heightなどは設定してはいけません。
このように形状の設定に関して多少の違いはありますが、それ以外の部分はほぼ同じです。色の設定や線の太さなどは同様に設定することができます。
オブジェクトとして用意されているため、作成した図形は後でプロパティなどを操作することで変更することも出来ます。例えば位置や形を操作してアニメーションさせるようなことも可能です。後での再利用という点では、この「オブジェクトによるグラフィック描画」はなかなか便利ですよ。
まずは、実際にサンプルを見てみましょう。下のリスト欄は、直線と三角形を表示する例です。ここでは先ほどと同じように、drawメソッドに描画の処理をまとめてあります。ここでは青地浴泉と、赤い三角形を表示してあります。では、それぞれのポイントを説明しましょう。
●直線の設定
el1.X1 = 100;直線は、開始位置と終了位置をX1, Y1, X2, Y2プロパティで指定して表示を作成します。Width/Heightは使いません。
el1.Y1 = 150;
el1.X2 = 350;
el1.Y2 = 300;
●多角形の設定
el2.Points = new PointCollection();多角形には頂点の位置情報を管理する「Points」というプロパティがあります。これは、位置情報をまとめて管理する「PointCollection」という専用のコレクションクラスが値として設定されます。位置の値は、「Point」というクラスとして用意されています。
el2.Points.Add(new Point(100,300));
el2.Points.Add(new Point(250, 450));
el2.Points.Add(new Point(100, 450));
つまり、PointsプロパティにPointCollectionインスタンスを設定し、これにPointで位置情報のインスタンスを作ってはAddで組み込む、ということを繰り返して、多角形の各頂点の位置情報を組み込んでいけばいいのです。Pointは、newする際、横位置と縦位置を引数に指定して作ります。やはり、これらで頂点の情報を設定したら、Width/Heightなどは設定してはいけません。
このように形状の設定に関して多少の違いはありますが、それ以外の部分はほぼ同じです。色の設定や線の太さなどは同様に設定することができます。
オブジェクトとして用意されているため、作成した図形は後でプロパティなどを操作することで変更することも出来ます。例えば位置や形を操作してアニメーションさせるようなことも可能です。後での再利用という点では、この「オブジェクトによるグラフィック描画」はなかなか便利ですよ。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; using Microsoft.Phone.Controls; namespace PhoneApp1 { public partial class MainPage : PhoneApplicationPage { // コンストラクター public MainPage() { InitializeComponent(); draw(); } public void draw() { var el1 = new Line(); el1.HorizontalAlignment = HorizontalAlignment.Left; el1.VerticalAlignment = VerticalAlignment.Top; el1.X1 = 100; el1.Y1 = 150; el1.X2 = 350; el1.Y2 = 300; el1.Stroke = new SolidColorBrush(Color.FromArgb(255,0,0,100)); el1.StrokeThickness = 10; ContentPanel.Children.Add(el1); var el2 = new Polygon(); el2.HorizontalAlignment = HorizontalAlignment.Left; el2.VerticalAlignment = VerticalAlignment.Top; el2.Points = new PointCollection(); el2.Points.Add(new Point(100,300)); el2.Points.Add(new Point(250, 450)); el2.Points.Add(new Point(100, 450)); el2.Fill = new SolidColorBrush(Colors.Red); el2.Stroke = new SolidColorBrush(Color.FromArgb(255,100,0,0)); el2.StrokeThickness = 10; ContentPanel.Children.Add(el2); } } }
※関連コンテンツ
「初心者のためのWindows Phoneプログラミング入門」に戻る