[Tips][PictureBox] 図形や文字を描画する

PictureBoxコントロールに図形や文字を描画するにはGraphicsオブジェクトを使用します。

はじめに PictureBoxコントロールのCreateGraphicsメソッドでGraphicsオブジェクトを作成します。

次に、作成したGraphicsオブジェクトを使用して図形や文字を描画します。

(GraphicsオブジェクトのDrawLine, DrawEllipse,DrawStringといったメソッドを使用)

最後にリソースを解放します。

下記はPictureBoxに図形や文字を描画する例です。

[図形を描画]ボタンをクリックすると描画を行います。

VBの例

' [描画]ボタンクリック時の処理
Private Sub btnDraw_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDraw.Click
    Dim objPen = New Pen(System.Drawing.Color.Blue, 2)
    Dim objFont = New Font("MS Pゴシック", 15)
    Dim objGrp As Graphics = PictureBox1.CreateGraphics

    ' 直線を引く
    objGrp.DrawLine(objPen, 20, 20, 200, 200)
    ' 楕円を描く
    objGrp.DrawEllipse(objPen, 10, 10, 190, 190)
    ' 楕円を描く
    objGrp.DrawString("描画テスト", objFont, Brushes.Red, 80, 100)

    ' リソースを解放する
    objPen.Dispose()
    objFont.Dispose()
    objGrp.Dispose()
End Sub

C#の例

// [描画]ボタンクリック時の処理
private void btnDraw_Click(object sender, EventArgs e)
{
    Pen objPen = new Pen(System.Drawing.Color.Blue, 2);
    Font objFont = new Font("MS Pゴシック", 15);
    Graphics objGrp = pictureBox1.CreateGraphics();

    // 直線を引く
    objGrp.DrawLine(objPen, 20, 20, 200, 200);
    // 楕円を描く
    objGrp.DrawEllipse(objPen, 10, 10, 190, 190);
    // 文字を描画する
    objGrp.DrawString("描画テスト", objFont, Brushes.Red, 80, 100);

    // リソースを解放する
    objPen.Dispose();
    objFont.Dispose();
    objGrp.Dispose();
}

[Tips][PictureBox] PictureBoxに表示されたイメージを消去する

[ad code=2 align=left]
PictureBoxコントロールに表示されたイメージを消去するには、ImageプロパティにNothing(C#の場合はNull)を設定します。

下記はPictureBoxに表示されたイメージを消去する例です。

VBの例

' [画像を開く]ボタンクリック時の処理
Private Sub btnOpenImage_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOpenImage.Click
    'フィルターの設定
    OpenFileDialog1.Filter = "画像ファイル|*.gif;*.jpg;*.png|すべてのファイル|*.*"

    'ファイル選択ダイアログを表示
    OpenFileDialog1.ShowDialog()
End Sub

' [開く]ボタンクリック時の処理
Private Sub OpenFileDialog1_FileOk(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles OpenFileDialog1.FileOk
    'イメージの表示方法を設定(サイズ比率を維持したまま拡大/縮小)
    PictureBox1.SizeMode = PictureBoxSizeMode.Zoom

    'PictureBoxにイメージを読み込む
    PictureBox1.Image = Image.FromFile(OpenFileDialog1.FileName)
End Sub

' [画像を消去]ボタンクリック時の処理
Private Sub btnImageClear_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnImageClear.Click
    '★★★画像を消去する★★★
    PictureBox1.Image = Nothing
End Sub

C#の例

// [画像を開く]ボタンクリック時の処理
private void btnOpenImage_Click(object sender, EventArgs e)
{
    // フィルターの設定
    openFileDialog1.Filter = "画像ファイル|*.gif;*.jpg;*.png|すべてのファイル|*.*";

    // ファイル選択ダイアログを表示
    openFileDialog1.ShowDialog();
}

// [開く]ボタンクリック時の処理
private void openFileDialog1_FileOk(object sender, CancelEventArgs e)
{
    // イメージの表示方法を設定(サイズ比率を維持したまま拡大/縮小)
    pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;

    // PictureBoxにイメージを読み込む
    pictureBox1.Image = Image.FromFile(openFileDialog1.FileName);
}

// [画像を消去]ボタンクリック時の処理
private void btnImageClear_Click(object sender, EventArgs e)
{
    // ★★★画像を消去する★★★
    pictureBox1.Image = null;
}