VB.NETお絵かきソフト
【画面作成】
PictureBox1やMainMenu1 ,OpenFileDialog ,SaveFileDialogを配置する。
メニューは, ファイル 色 線の太さ
├読み込み ├黒 ├1
├保存 └白 ├3
└終了 └5 (※MenuItem番号に注意)

【画像の取扱方】
VB.NETでは,完全なオブジェクト指向となり,VB6と画像の取扱いの考えが違う。VB6では,Picture1に線や四角を書くなど命令(メソッド)があったが,VB.NETにはない。
VB.NETでは,「画用紙」はImage,「額」はPictureBoxであり「線引き道具」g.Graphics「ペン」Penであり「色」Color.colorと独立したオブジェクトとなっている。これらを順番に準備しないとならない。(※ 高校生相手なので厳密な説明にはなっていません。)
【コード】<<ダウンロード>>
|
Public Class Form1 Inherits
System.Windows.Forms.Form Windows フォーム デザイナで生成されたコード '変数やオブジェクトのひな形を準備 Dim
PDown As Boolean Dim
ox, oy, pw As Integer Dim
co As Color Dim
img As Image Dim
g As Graphics Dim
p As Pen Dim
b As Brush Private Sub Form1_Load(ByVal
sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load '画用紙(透明)の準備(※後で,大きさが新しくなるかもしれない(動的)オブジェクトなので,新しく(New)する。)
img = New Bitmap(PictureBox1.Width,
PictureBox1.Height) 'お絵かき道具(DrawLineなどの)の準備(※準備物は変化しない(静的)オブジェクトなので,新しく(New)しない) g
= Graphics.FromImage(img) 'ペン,ブラシの準備(※後で,大きさが新しくなるかもしれない(動的)オブジェクトなので,新しく(New)する。)
pw = 1
co = Color.Black p
= New Pen(co, pw) b
= Brushes.White '額縁(Picturebox)に画用紙を貼り付ける
PictureBox1.Image = img '画用紙が透明(黒)では嫌なので,白で塗りつぶす。
g.FillRectangle(b, 0, 0, PictureBox1.Width, PictureBox1.Height) 'マウスのボタン判定のフラグをクリア
PDown = False End
Sub Private
Sub PictureBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown '描画フラグON,座標記録
PDown = True
ox = e.X
oy = e.Y End
Sub Private
Sub PictureBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove If PDown Then
'ラインを引く
g.DrawLine(p, ox, oy, e.X, e.Y)
'PictureBoxを再描画する
PictureBox1.Invalidate()
'いまのXY座標を保存
ox = e.X : oy = e.Y End If End
Sub Private
Sub PictureBox1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseUp '描画フラグの解除
PDown = False End
Sub Private
Sub MenuItem2_Click(ByVal
sender As System.Object, ByVal e As
System.EventArgs) Handles MenuItem2.Click '画像の読み込み
OpenFileDialog1.ShowDialog() '画像を表示する
PictureBox1.Image.FromFile(OpenFileDialog1.FileName)はダメ Dim loadbmp As New Bitmap(OpenFileDialog1.FileName)
g.DrawImage(loadbmp, 0, 0) 'PictureBoxを再描画する
PictureBox1.Invalidate() 'リソースの解放
loadbmp.Dispose() End
Sub Private
Sub MenuItem3_Click(ByVal
sender As System.Object, ByVal e As
System.EventArgs) Handles MenuItem3.Click '画像の保存(jpeg形式)
SaveFileDialog1.ShowDialog()
PictureBox1.Image.Save(SaveFileDialog1.FileName,
Imaging.ImageFormat.Jpeg) End
Sub Private
Sub MenuItem4_Click(ByVal
sender As System.Object, ByVal e As
System.EventArgs) Handles MenuItem4.Click 'アプリケーションの終了
Application.Exit() End
Sub Private
Sub MenuItem6_Click(ByVal
sender As System.Object, ByVal e As
System.EventArgs) Handles MenuItem6.Click 'ペンの色を黒に変更
co = Color.Black p
= New Pen(co, pw) End
Sub Private
Sub MenuItem7_Click(ByVal
sender As System.Object, ByVal e As
System.EventArgs) Handles MenuItem7.Click 'ペンの色を白に変更
co = Color.White p
= New Pen(co, pw) End
Sub Private
Sub MenuItem8_Click(ByVal
sender As System.Object, ByVal e As
System.EventArgs) Handles MenuItem8.Click 'ペンの太さを1に変更
pw = 1 p
= New Pen(co, pw) End
Sub Private
Sub MenuItem9_Click(ByVal
sender As System.Object, ByVal e As
System.EventArgs) Handles MenuItem9.Click 'ペンの太さを3に変更
pw = 3 p
= New Pen(co, pw) End
Sub Private
Sub MenuItem10_Click(ByVal
sender As System.Object, ByVal e As
System.EventArgs) Handles MenuItem10.Click 'ペンの太さを5に変更
pw = 5 p
= New Pen(co, pw) End
Sub End Class |
【発 展】
色の種類や太さの段階を増やしてみよう。