/// 実習H2(節約バージョン) グラフィックス(1) プログラミング実習 目次に戻る
 back next 
実習H2図形描画 完成版 各ボタンのメソッド(イベントハンドラ)では、「Graphicsオブジェクト作成」、「描画」、「更新」、「解放」の順でプログラムされている。オブジェクトを作成して、プログラム終了まで解放しなければ、それぞれのメソッドは、「描画」、「更新」だけで済む。すなわち、処理が節約できる。
 作成したGraphicsオブジェクトを格納する変数をメンバ変数として、すべてのメソッドの中で参照できるようにする。実習H2のプログラムを変更していく。

コード(プログラム)

Public Class Form1
  Dim gr As Graphics    'Graphicsオブジェクト用

  Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    'Bitmapオブジェクト作成
    picCanvas.Image = New Bitmap(picCanvas.Width, picCanvas.Height)
    'Graphicsオブジェクト作成
    gr = Graphics.FromImage(picCanvas.Image)
  End Sub

  Private Sub btnLine_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLine.Click
    'Graphicsオブジェクト作成
    Dim gr As Graphics = Graphics.FromImage(picCanvas.Image)
    '水平線、黒色
    gr.DrawLine(Pens.Black, 10, 100, 290, 100)
    '垂直線、赤色
    gr.DrawLine(Pens.Red, 70, 10, 70, 290)
    '斜線、青色
    gr.DrawLine(Pens.Blue, 30, 30, 270, 270)
    'picCanvasの更新
    picCanvas.Refresh()
    'オブジェクト解放
    gr.Dispose()
  End Sub
End Class


H2の2  (消去)

コード(プログラム)    追加部分のみ。 

  Private Sub btnClear_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnClear.Click
    'Graphicsオブジェクト作成
    Dim gr As Graphics = Graphics.FromImage(picCanvas.Image)
    'グラフィックス消去()
    gr.Clear(Color.White)
    picCanvas.Refresh()    'picCanvasの更新
    gr.Dispose()    'オブジェクト解放
  End Sub


H2の3  (四角形)

コード(プログラム)    追加部分のみ。 

   Private Sub btnShikaku_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnShikaku.Click
    'Graphicsオブジェクト作成
    Dim gr As Graphics = Graphics.FromImage(picCanvas.Image)
    '長方形、緑色、始点(10,10)、幅200pix、高さ150pix
    gr.DrawRectangle(Pens.Green, 10, 10, 200, 150)
    '正方形、オレンジ色、始点(50,30)、幅150pix、高さ150pix
    gr.DrawRectangle(Pens.Orange, 50, 30, 150, 150)
    picCanvas.Refresh()    'picCanvasの更新
    gr.Dispose()    'オブジェクト解放
  End Sub


H2の4  (だ円)

コード(プログラム)    追加部分のみ。 

  Private Sub btnDaen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDaen.Click
    'Graphicsオブジェクト作成
    Dim gr As Graphics = Graphics.FromImage(picCanvas.Image)
    '円、マゼンタ色
    gr.DrawEllipse(Pens.Magenta, 0, 0, 150, 150)
    'だ円、オリーブ色
    gr.DrawEllipse(Pens.Olive, 20, 20, 250, 125)
    picCanvas.Refresh()    'picCanvasの更新
    gr.Dispose()    'オブジェクト解放
  End Sub


H2の5  (塗りつぶし)

コード(プログラム)    追加部分のみす。 

   Private Sub btnFill_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFill.Click
    'Graphicsオブジェクト作成
    Dim gr As Graphics = Graphics.FromImage(picCanvas.Image)
    '塗りつぶしの四角形、チョコレート色
    gr.FillRectangle(Brushes.Chocolate, 100, 100, 150, 80)
    'だ円、シアン色
    gr.FillEllipse(Brushes.Cyan, 50, 150, 120, 70)
    picCanvas.Refresh()    'picCanvasの更新
    gr.Dispose()    'オブジェクト解放
  End Sub


H2の6  (文字)

コード(プログラム)    追加部分のみ。 

   Private Sub btnMoji_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnMoji.Click
    'Graphicsオブジェクト作成
    Dim gr As Graphics = Graphics.FromImage(picCanvas.Image)
    'Fontオブジェクト作成
    Dim gfont As New Font("MS 明朝", 12, FontStyle.Bold)
    '文字描画             ↑”MS”は全角、”MS”と”明朝”の間は半角空白。
    gr.DrawString("プログラミング実習", gfont, Brushes.Black, 20, 10)
    picCanvas.Refresh() 'picCanvasの更新
    gr.Dispose()    'オブジェクト解放
    gfont.Dispose()    'オブジェクト解放
  End Sub


 プログラム終了時の「オブジェクト解放」の処理の追加

  Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    gr.Dispose()    'オブジェクト解放
  End Sub

 

 back next 
/// 実習H2(節約バージョン) グラフィックス(1) Copyright©2014 Hiroshi Masuda 

 

 

 

inserted by FC2 system