§17 グラフィックス(1)1 プログラミング実習
 back next 

 フォームやピクチャボックスに直線や円などのグラフィックス(Graphics)を描画する。描画するときは、座標で位置を指定する。座標は水平方向をX座標、垂直方向をY座標として、原点(0,0)はフォームやピクチャボックスの左上端となる。

利用するオブジェクト等
グラフィックス(Graphics)クラス

【1】 プログラム作成の準備

操作 1 Windowsアプリケーションを作成するためのプロジェクトを作成する。プロジェクト名は「実習17グラフィックス1」とする。

操作 2 フォーム(Form1)のプロパティを次のように設定する。

Text グラフィックス1    

操作 3 ピクチャボックスを1つ配置し、プロパティを次のように設定する。

(Name) PictureBox1 BackColor White
Location 12, 12 Size 200, 200

操作 4 プログラムを保存する。 ( [ファイル(F)] → [すべてを保存(L)] )

 

【2】 直線の描画

 グラフィックスクラスを使って、ピクチャボックスとフォームにそれぞれ直線を描画する。

操作 5 ボタンを1つ配置し、プロパティを次のように設定する。ダブルクリックで配置する。

(Name) Button1 Location 215, 12 Text 直線

操作 6 [直線](Button1)ボタンのクリックイベントに対応するメソッドを次のように作成する。

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        'グラフィックオブジェクトの作成
        Dim gr As Graphics = PictureBox1.CreateGraphics 'ピクチャボックス用
        Dim gr2 As Graphics = Me.CreateGraphics 'フォーム用
        '直線描画
        gr.DrawLine(Pens.Black, 10, 10, 190, 190)
        gr.DrawLine(Pens.Red, 190, 10, 10, 190)
        gr2.DrawLine(Pens.Blue, 10, 10, 280, 260)
        gr2.DrawLine(Pens.Green, 280, 10, 10, 260)
        'オブジェクト解放
        gr.Dispose()
        gr2.Dispose()
    End Sub

 グラフィックスクラスを扱う変数を宣言する。変数grはピクチャボックスPictuerBox1用、変数gr2はフォーム用である。CreateGraphicsメソッドでグラフィックオブジェクトを作成する。
 gr.DrawLineメソッドでピクチャボックスの中に直線を描画し、gr2.DrawLineメソッドでフォーム上に直線を描画している。
 Disposeメソッドは、使用したオブジェクト(リソース)を解放し、メモリをほかで使えるようにする。
DrawLine(ペン, 始点x, 始点y, 終点x, 終点y)
 ペン オブジェクトを使って、直線を描画する。
結果 実行して、[直線]ボタンをクリックすると直線が描画される。


【3】 ペン(線)の設定

 ペンオブジェクトで色だけでなく、いろいろな設定ができる。ここでは、太さ、線の種類、矢印などを設定する。

○ 線の太さと色

操作 7 線の太さを5ピクセルに設定する。下線部のプログラムを追加・修正する。

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        'グラフィックオブジェクトの作成
        Dim gr As Graphics = PictureBox1.CreateGraphics        'ピクチャボックス用
        Dim gpen As New Pen(Color.Black, 5)        'ペンオブジェクト
        Dim gr2 As Graphics = Me.CreateGraphics    '削除
        '直線描画
        gr.DrawLine(gpen, 10, 10, 190, 190)
        gpen.Color = Color.Red        'ペン色の設定
        gr.DrawLine(gpen, 190, 10, 10, 190)
        gr2.DrawLine(Pens.Blue, 10, 10, 280, 260)    '削除
        gr2.DrawLine(Pens.Green, 280, 10, 10, 260)    '削除
        'オブジェクト解放
        gr.Dispose()
        gpen.Dispose()
        gr2.Dispose()    '削除
    End Sub

 ペンオブジェクトgpenに線の太さや色を設定して、直線描画のメソッドで利用する。ペンオブジェクトの色はColorプロパティに設定する。また、幅はWidthプロパティに設定する。
 ピクチャボックスへの描画もフォームへの描画も同じであるから、フォームへの描画部分は削除する。
結果 実行して、[直線]ボタンをクリックすると太い直線が描画される。

○ 線の種類

操作 8 線の種類を破線(ダッシュ)に設定する。下線部のプログラムを追加する。

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        << 略 >>
        '直線描画
        gpen.DashStyle = Drawing2D.DashStyle.Dash    '破線に設定
        gr.DrawLine(gpen, 10, 10, 190, 190)
        << 略 >>
    End Sub

 ペンオブジェクトgpenのDashStyleに線の種類を設定する。
Drawing2D.DashStyle 列挙体
Solid  実線
Dash  ダッシュ
Dot  ドット
DashDot ダッシュとドットの繰り返しパターン
DashDotDot  ダッシュと2つのドットの繰り返しパターン
Custom  ユーザー定義のカスタムダッシュスタイル
結果 実行して、[直線]ボタンをクリックすると破線(ダッシュ)が描画される。

○ 矢印

操作 9 線の種類を破線(ダッシュ)に設定する。下線部のプログラムを追加する。

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        << 略 >>
        '直線描画
        gpen.DashStyle = Drawing2D.DashStyle.Dash    '破線に設定
        gpen.EndCap = Drawing2D.LineCap.ArrowAnchor    '終端に矢印を設定
        gr.DrawLine(gpen, 10, 10, 190, 190)
        << 略 >>
    End Sub

 ペンオブジェクトgpenのEndCapに矢印の種類を設定する。この場合、直線の終端(座標(190,190)と(10,190))に矢印が描画される。直線の始点に設定するにはStartCapプロパティを使う。
 矢印のように、直線の始点や終点の形状を「キャップスタイル」という。
Drawing2D.LineCap 列挙体
Flat 平坦なラインキャップ SquareAnchor 四角形のアンカラインキャップ
Square 四角形のラインキャップ RoundAnchor 丸いアンカキャップ
Round 丸いラインキャップ DiamondAnchor  菱形のアンカキャップ
Triangle  三角形のラインキャップ ArrowAnchor 矢印形のアンカキャップ
NoAnchor  アンカなし Custom  カスタムラインキャップ
結果 実行して、[直線]ボタンをクリックすると破線(ダッシュ)が描画される。

 

 back next 
 §17 グラフィックス(1)1 Copyright©2009 Hiroshi Masuda 

 

 

inserted by FC2 system