DOBON.NET DOBON.NETプログラミング掲示板過去ログ

図形を拡大表示するには・・?

環境/言語:[OS : Windows XP Home Edition / 言語 : Visual Basic .NET / .NET Framework : 1.1]
分類:[.NET]

【解決したい問題】

はじめまして。
最近プログラミングに興味を持ち、見よう見まねで色々試しています。
こちらのHPに載っている記事はとても勉強になります〜。
早速、やってみたのですが、少しうまくいかない所があり、
質問させていただきます。

拡大表示についての質問です。

◆フォーム1にPictureBox1とButton1・2・3
(1:線を引く2:画像を表示する3:拡大するボタン)
を作りました。
1を押すと、pictureBox1に線が表示されます。
2を押すと線が消え、画像ファイルが表示されます。
もう一度1をおすと、画像の上に線が表示されます。
そして、3を押すと、画像ファイルのみが拡大され、線は元のサイズのままです。
1・2・3(または、2・1・3)の順でボタンを押すと
2つが一緒に拡大するようにしたいのですが、可能でしょうか?

"PictureBoxのImageプロパティに関するよくある勘違い"のページを
読んでこれかな?と思い、線を引くコードに
Dim NGRAPH As Graphics = Graphics.FromImage(PictureBox1.Image)
を入れればいいのかな、と思ったのですが、入れてみると
「'System.ArgumentNullException' のハンドルされていない例外が system.drawing.dll で発生しました。
追加情報 : 値を Null にすることはできません。」
というエラーメッセージが出ます。

よろしくお願いします〜(;;)

コードは以下のように書きました。(長々とすみません・・)

’線を引く
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim NGRAPH As Graphics = PictureBox1.CreateGraphics()
Dim Pencil As New Pen(Color.Black, 1)
NGRAPH.DrawLine(Pens.Blue, 0, 0, 100, 100)
NGRAPH.Dispose()
End Sub

’画像を読込
Private Sub Button2_Click_(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
OpenFileDialog1.Filter = "JPEG|*.jpg|GIF|*.gif|ビットマップ|*.bmp|すべてのファイル (*.*)|*.*"
OpenFileDialog1.FilterIndex = 3
If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
PictureBox1.Image = New Bitmap(OpenFileDialog1.OpenFile())
Else
Exit Sub
End If
End Sub

'PictureBox1のImageを1.5倍に拡大
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim PIMG As Image = PictureBox1.Image
Dim NGRAPH As Graphics = PictureBox1.CreateGraphics()
If (PIMG Is Nothing) Then
MsgBox("イメージがありません", MsgBoxStyle.Information)
Exit Sub
End If
NGRAPH.InterpolationMode=Drawing2D.InterpolationMode._
    NearestNeighbor
NGRAPH.DrawImage(PIMG, 0, 0, 1.5F * PIMG.Width, 1.5F * PIMG.Height)
NGRAPH.Dispose()
PIMG.Dispose()
End Sub
> "PictureBoxのImageプロパティに関するよくある勘違い"のページを
> 読んでこれかな?と思い、線を引くコードに
> Dim NGRAPH As Graphics = Graphics.FromImage(PictureBox1.Image)
> を入れればいいのかな、と思ったのですが、入れてみると
> 「'System.ArgumentNullException' のハンドルされていない例外が system.drawing.dll で発生しました。
> 追加情報 : 値を Null にすることはできません。」
> というエラーメッセージが出ます。

Button2_Click_でピクチャボックスのImageプロパティに画像が読み込まれていれば、このようなエラーは出ないと思います。確実にImageプロパティにBitmapが設定されているか確かめてください。
こんばんは。
管理人さんお返事ありがとうございます〜。

> Button2_Click_でピクチャボックスのImageプロパティに画像が読み込まれていれば、このようなエラーは出ないと思います。確実にImageプロパティにBitmapが設定されているか確かめてください。


仰るとおり、Bitmapが設定されていないのでエラーが出ていたみたいです・・
当たり前といえば当たり前すぎるエラーだったのかなと。(^^;
もう一度コードを入れ替えて試してみたら、線と画像が拡大表示されて
出てきました!ご回答どうもありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板