Imports System.Drawing
Imports System.Drawing.Drawing2D
Imports System.Windows.Forms
public class Scribble
public Shared Sub Main
Application.Run(New frmScribble)
End Sub
End class
'Sams Teach Yourself Visual Basic .NET in 21 Days
'By Lowell Mauer
'Published 2001
'Sams Publishing
'ISBN 0672322714
Public Class frmScribble
Inherits System.Windows.Forms.Form
#Region " Windows Form Designer generated code "
Public Sub New()
MyBase.New()
'This call is required by the Windows Form Designer.
InitializeComponent()
'Add any initialization after the InitializeComponent() call
End Sub
'Form overrides dispose to clean up the component list.
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
Private WithEvents pnlTools As System.Windows.Forms.Panel
Private WithEvents optPen As System.Windows.Forms.RadioButton
Private WithEvents picDraw As System.Windows.Forms.PictureBox
Private WithEvents optShape As System.Windows.Forms.RadioButton
Private WithEvents optText As System.Windows.Forms.RadioButton
Private WithEvents pnlOptions As System.Windows.Forms.Panel
Private WithEvents mnuMain As System.Windows.Forms.MainMenu
Private WithEvents mnuFile As System.Windows.Forms.MenuItem
Private WithEvents mnuFileNew As System.Windows.Forms.MenuItem
Private WithEvents mnuFileOpen As System.Windows.Forms.MenuItem
Private WithEvents mnuFileSave As System.Windows.Forms.MenuItem
Private WithEvents mnuFileSep As System.Windows.Forms.MenuItem
Private WithEvents mnuFileExit As System.Windows.Forms.MenuItem
Private WithEvents dlgOpen As System.Windows.Forms.OpenFileDialog
Private WithEvents dlgSave As System.Windows.Forms.SaveFileDialog
Private WithEvents pnlPenOptions As System.Windows.Forms.Panel
Private WithEvents lblColor As System.Windows.Forms.Label
Private WithEvents cboColors As System.Windows.Forms.ComboBox
Private WithEvents lblPenWidth As System.Windows.Forms.Label
Private WithEvents updPenWidth As System.Windows.Forms.NumericUpDown
Private WithEvents pnlShapeOptions As System.Windows.Forms.Panel
Private WithEvents pnlTextOptions As System.Windows.Forms.Panel
Private WithEvents lblText As System.Windows.Forms.Label
Private WithEvents txtText As System.Windows.Forms.TextBox
Private WithEvents lblTextFont As System.Windows.Forms.Label
Private WithEvents cboTextFont As System.Windows.Forms.ComboBox
Private WithEvents lblFontSize As System.Windows.Forms.Label
Private WithEvents updFontSize As System.Windows.Forms.NumericUpDown
Private WithEvents lblShapeType As System.Windows.Forms.Label
Private WithEvents cboShapeType As System.Windows.Forms.ComboBox
Private WithEvents lblShapeHeight As System.Windows.Forms.Label
Private WithEvents updShapeHeight As System.Windows.Forms.NumericUpDown
Private WithEvents updShapeWidth As System.Windows.Forms.NumericUpDown
Private WithEvents lblShapeWidth As System.Windows.Forms.Label
'Required by the Windows Form Designer
Private components As System.ComponentModel.Container
'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Me.updShapeHeight = New System.Windows.Forms.NumericUpDown()
Me.cboColors = New System.Windows.Forms.ComboBox()
Me.pnlShapeOptions = New System.Windows.Forms.Panel()
Me.lblShapeWidth = New System.Windows.Forms.Label()
Me.updShapeWidth = New System.Windows.Forms.NumericUpDown()
Me.lblShapeHeight = New System.Windows.Forms.Label()
Me.cboShapeType = New System.Windows.Forms.ComboBox()
Me.lblShapeType = New System.Windows.Forms.Label()
Me.updPenWidth = New System.Windows.Forms.NumericUpDown()
Me.pnlTools = New System.Windows.Forms.Panel()
Me.optText = New System.Windows.Forms.RadioButton()
Me.optShape = New System.Windows.Forms.RadioButton()
Me.optPen = New System.Windows.Forms.RadioButton()
Me.picDraw = New System.Windows.Forms.PictureBox()
Me.pnlPenOptions = New System.Windows.Forms.Panel()
Me.lblPenWidth = New System.Windows.Forms.Label()
Me.mnuFileExit = New System.Windows.Forms.MenuItem()
Me.updFontSize = New System.Windows.Forms.NumericUpDown()
Me.mnuMain = New System.Windows.Forms.MainMenu()
Me.mnuFile = New System.Windows.Forms.MenuItem()
Me.mnuFileNew = New System.Windows.Forms.MenuItem()
Me.mnuFileOpen = New System.Windows.Forms.MenuItem()
Me.mnuFileSave = New System.Windows.Forms.MenuItem()
Me.mnuFileSep = New System.Windows.Forms.MenuItem()
Me.cboTextFont = New System.Windows.Forms.ComboBox()
Me.pnlOptions = New System.Windows.Forms.Panel()
Me.pnlTextOptions = New System.Windows.Forms.Panel()
Me.lblFontSize = New System.Windows.Forms.Label()
Me.lblTextFont = New System.Windows.Forms.Label()
Me.txtText = New System.Windows.Forms.TextBox()
Me.lblText = New System.Windows.Forms.Label()
Me.lblColor = New System.Windows.Forms.Label()
Me.dlgSave = New System.Windows.Forms.SaveFileDialog()
Me.dlgOpen = New System.Windows.Forms.OpenFileDialog()
CType(Me.updShapeHeight, System.ComponentModel.ISupportInitialize).BeginInit()
Me.updShapeHeight.SuspendLayout()
Me.pnlShapeOptions.SuspendLayout()
CType(Me.updShapeWidth, System.ComponentModel.ISupportInitialize).BeginInit()
Me.updShapeWidth.SuspendLayout()
CType(Me.updPenWidth, System.ComponentModel.ISupportInitialize).BeginInit()
Me.updPenWidth.SuspendLayout()
Me.pnlTools.SuspendLayout()
Me.pnlPenOptions.SuspendLayout()
CType(Me.updFontSize, System.ComponentModel.ISupportInitialize).BeginInit()
Me.updFontSize.SuspendLayout()
Me.pnlOptions.SuspendLayout()
Me.pnlTextOptions.SuspendLayout()
Me.SuspendLayout()
'
'updShapeHeight
'
Me.updShapeHeight.Location = New System.Drawing.Point(64, 32)
Me.updShapeHeight.Maximum = New Decimal(New Integer() {1000, 0, 0, 0})
Me.updShapeHeight.Minimum = New Decimal(New Integer() {1, 0, 0, 0})
Me.updShapeHeight.Name = "updShapeHeight"
Me.updShapeHeight.Size = New System.Drawing.Size(48, 20)
Me.updShapeHeight.TabIndex = 3
Me.updShapeHeight.Value = New Decimal(New Integer() {20, 0, 0, 0})
'
'cboColors
'
Me.cboColors.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
Me.cboColors.DropDownWidth = 136
Me.cboColors.Location = New System.Drawing.Point(8, 24)
Me.cboColors.Name = "cboColors"
Me.cboColors.Size = New System.Drawing.Size(136, 21)
Me.cboColors.TabIndex = 2
'
'pnlShapeOptions
'
Me.pnlShapeOptions.Controls.AddRange(New System.Windows.Forms.Control() {Me.lblShapeWidth, Me.updShapeWidth, Me.updShapeHeight, Me.lblShapeHeight, Me.cboShapeType, Me.lblShapeType})
Me.pnlShapeOptions.Location = New System.Drawing.Point(160, 8)
Me.pnlShapeOptions.Name = "pnlShapeOptions"
Me.pnlShapeOptions.Size = New System.Drawing.Size(274, 56)
Me.pnlShapeOptions.TabIndex = 0
'
'lblShapeWidth
'
Me.lblShapeWidth.Location = New System.Drawing.Point(128, 32)
Me.lblShapeWidth.Name = "lblShapeWidth"
Me.lblShapeWidth.Size = New System.Drawing.Size(48, 16)
Me.lblShapeWidth.TabIndex = 2
Me.lblShapeWidth.Text = "Width:"
'
'updShapeWidth
'
Me.updShapeWidth.Location = New System.Drawing.Point(184, 32)
Me.updShapeWidth.Maximum = New Decimal(New Integer() {1000, 0, 0, 0})
Me.updShapeWidth.Minimum = New Decimal(New Integer() {1, 0, 0, 0})
Me.updShapeWidth.Name = "updShapeWidth"
Me.updShapeWidth.Size = New System.Drawing.Size(48, 20)
Me.updShapeWidth.TabIndex = 3
Me.updShapeWidth.Value = New Decimal(New Integer() {20, 0, 0, 0})
'
'lblShapeHeight
'
Me.lblShapeHeight.Location = New System.Drawing.Point(8, 32)
Me.lblShapeHeight.Name = "lblShapeHeight"
Me.lblShapeHeight.Size = New System.Drawing.Size(48, 16)
Me.lblShapeHeight.TabIndex = 2
Me.lblShapeHeight.Text = "Height:"
'
'cboShapeType
'
Me.cboShapeType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
Me.cboShapeType.DropDownWidth = 121
Me.cboShapeType.Location = New System.Drawing.Point(64, 8)
Me.cboShapeType.Name = "cboShapeType"
Me.cboShapeType.Size = New System.Drawing.Size(121, 21)
Me.cboShapeType.TabIndex = 1
'
'lblShapeType
'
Me.lblShapeType.Location = New System.Drawing.Point(8, 8)
Me.lblShapeType.Name = "lblShapeType"
Me.lblShapeType.Size = New System.Drawing.Size(48, 16)
Me.lblShapeType.TabIndex = 0
Me.lblShapeType.Text = "Type:"
'
'updPenWidth
'
Me.updPenWidth.Location = New System.Drawing.Point(96, 8)
Me.updPenWidth.Maximum = New Decimal(New Integer() {10, 0, 0, 0})
Me.updPenWidth.Minimum = New Decimal(New Integer() {1, 0, 0, 0})
Me.updPenWidth.Name = "updPenWidth"
Me.updPenWidth.Size = New System.Drawing.Size(48, 20)
Me.updPenWidth.TabIndex = 1
Me.updPenWidth.Value = New Decimal(New Integer() {1, 0, 0, 0})
'
'pnlTools
'
Me.pnlTools.Controls.AddRange(New System.Windows.Forms.Control() {Me.optText, Me.optShape, Me.optPen})
Me.pnlTools.Dock = System.Windows.Forms.DockStyle.Left
Me.pnlTools.Name = "pnlTools"
Me.pnlTools.Size = New System.Drawing.Size(64, 332)
Me.pnlTools.TabIndex = 0
'
'optText
'
Me.optText.Appearance = System.Windows.Forms.Appearance.Button
Me.optText.Location = New System.Drawing.Point(8, 88)
Me.optText.Name = "optText"
Me.optText.Size = New System.Drawing.Size(48, 36)
Me.optText.TabIndex = 0
Me.optText.Text = "Text"
Me.optText.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
'
'optShape
'
Me.optShape.Appearance = System.Windows.Forms.Appearance.Button
Me.optShape.Location = New System.Drawing.Point(8, 48)
Me.optShape.Name = "optShape"
Me.optShape.Size = New System.Drawing.Size(48, 36)
Me.optShape.TabIndex = 0
Me.optShape.Text = "Shape"
Me.optShape.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
'
'optPen
'
Me.optPen.Appearance = System.Windows.Forms.Appearance.Button
Me.optPen.Checked = True
Me.optPen.Location = New System.Drawing.Point(8, 8)
Me.optPen.Name = "optPen"
Me.optPen.Size = New System.Drawing.Size(48, 36)
Me.optPen.TabIndex = 0
Me.optPen.TabStop = True
Me.optPen.Text = "Pen"
Me.optPen.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
'
'picDraw
'
Me.picDraw.BackColor = System.Drawing.SystemColors.Window
Me.picDraw.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D
Me.picDraw.Dock = System.Windows.Forms.DockStyle.Fill
Me.picDraw.Location = New System.Drawing.Point(64, 0)
Me.picDraw.Name = "picDraw"
Me.picDraw.Size = New System.Drawing.Size(436, 260)
Me.picDraw.TabIndex = 2
Me.picDraw.TabStop = False
'
'pnlPenOptions
'
Me.pnlPenOptions.Controls.AddRange(New System.Windows.Forms.Control() {Me.updPenWidth, Me.lblPenWidth})
Me.pnlPenOptions.Location = New System.Drawing.Point(160, 8)
Me.pnlPenOptions.Name = "pnlPenOptions"
Me.pnlPenOptions.Size = New System.Drawing.Size(274, 56)
Me.pnlPenOptions.TabIndex = 0
'
'lblPenWidth
'
Me.lblPenWidth.Location = New System.Drawing.Point(8, 8)
Me.lblPenWidth.Name = "lblPenWidth"
Me.lblPenWidth.Size = New System.Drawing.Size(80, 16)
Me.lblPenWidth.TabIndex = 0
Me.lblPenWidth.Text = "Pen Width:"
'
'mnuFileExit
'
Me.mnuFileExit.Index = 4
Me.mnuFileExit.Shortcut = System.Windows.Forms.Shortcut.CtrlQ
Me.mnuFileExit.Text = "E&xit"
'
'updFontSize
'
Me.updFontSize.Location = New System.Drawing.Point(208, 32)
Me.updFontSize.Maximum = New Decimal(New Integer() {72, 0, 0, 0})
Me.updFontSize.Minimum = New Decimal(New Integer() {6, 0, 0, 0})
Me.updFontSize.Name = "updFontSize"
Me.updFontSize.Size = New System.Drawing.Size(48, 20)
Me.updFontSize.TabIndex = 5
Me.updFontSize.Value = New Decimal(New Integer() {12, 0, 0, 0})
'
'mnuMain
'
Me.mnuMain.MenuItems.AddRange(New System.Windows.Forms.MenuItem() {Me.mnuFile})
'
'mnuFile
'
Me.mnuFile.Index = 0
Me.mnuFile.MenuItems.AddRange(New System.Windows.Forms.MenuItem() {Me.mnuFileNew, Me.mnuFileOpen, Me.mnuFileSave, Me.mnuFileSep, Me.mnuFileExit})
Me.mnuFile.Text = "&File"
'
'mnuFileNew
'
Me.mnuFileNew.Index = 0
Me.mnuFileNew.Shortcut = System.Windows.Forms.Shortcut.CtrlN
Me.mnuFileNew.Text = "&New"
'
'mnuFileOpen
'
Me.mnuFileOpen.Index = 1
Me.mnuFileOpen.Shortcut = System.Windows.Forms.Shortcut.CtrlO
Me.mnuFileOpen.Text = "&Open..."
'
'mnuFileSave
'
Me.mnuFileSave.Index = 2
Me.mnuFileSave.Shortcut = System.Windows.Forms.Shortcut.CtrlS
Me.mnuFileSave.Text = "&Save"
'
'mnuFileSep
'
Me.mnuFileSep.Index = 3
Me.mnuFileSep.Text = "-"
'
'cboTextFont
'
Me.cboTextFont.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
Me.cboTextFont.DropDownWidth = 104
Me.cboTextFont.Location = New System.Drawing.Point(48, 32)
Me.cboTextFont.Name = "cboTextFont"
Me.cboTextFont.Size = New System.Drawing.Size(104, 21)
Me.cboTextFont.TabIndex = 3
'
'pnlOptions
'
Me.pnlOptions.Controls.AddRange(New System.Windows.Forms.Control() {Me.pnlTextOptions, Me.pnlShapeOptions, Me.cboColors, Me.lblColor, Me.pnlPenOptions})
Me.pnlOptions.Dock = System.Windows.Forms.DockStyle.Bottom
Me.pnlOptions.Location = New System.Drawing.Point(64, 260)
Me.pnlOptions.Name = "pnlOptions"
Me.pnlOptions.Size = New System.Drawing.Size(436, 72)
Me.pnlOptions.TabIndex = 1
'
'pnlTextOptions
'
Me.pnlTextOptions.Controls.AddRange(New System.Windows.Forms.Control() {Me.updFontSize, Me.lblFontSize, Me.cboTextFont, Me.lblTextFont, Me.txtText, Me.lblText})
Me.pnlTextOptions.Location = New System.Drawing.Point(160, 8)
Me.pnlTextOptions.Name = "pnlTextOptions"
Me.pnlTextOptions.Size = New System.Drawing.Size(274, 56)
Me.pnlTextOptions.TabIndex = 0
'
'lblFontSize
'
Me.lblFontSize.Location = New System.Drawing.Point(160, 32)
Me.lblFontSize.Name = "lblFontSize"
Me.lblFontSize.Size = New System.Drawing.Size(40, 16)
Me.lblFontSize.TabIndex = 4
Me.lblFontSize.Text = "Size:"
'
'lblTextFont
'
Me.lblTextFont.Location = New System.Drawing.Point(8, 32)
Me.lblTextFont.Name = "lblTextFont"
Me.lblTextFont.Size = New System.Drawing.Size(40, 16)
Me.lblTextFont.TabIndex = 2
Me.lblTextFont.Text = "Font:"
'
'txtText
'
Me.txtText.Location = New System.Drawing.Point(48, 8)
Me.txtText.Name = "txtText"
Me.txtText.Size = New System.Drawing.Size(208, 20)
Me.txtText.TabIndex = 1
Me.txtText.Text = "Scribble!"
'
'lblText
'
Me.lblText.Location = New System.Drawing.Point(8, 8)
Me.lblText.Name = "lblText"
Me.lblText.Size = New System.Drawing.Size(40, 16)
Me.lblText.TabIndex = 0
Me.lblText.Text = "Text:"
'
'lblColor
'
Me.lblColor.Location = New System.Drawing.Point(8, 8)
Me.lblColor.Name = "lblColor"
Me.lblColor.Size = New System.Drawing.Size(48, 16)
Me.lblColor.TabIndex = 1
Me.lblColor.Text = "Color:"
'
'dlgSave
'
Me.dlgSave.DefaultExt = "bmp"
Me.dlgSave.FileName = "Scribble1"
Me.dlgSave.Filter = "Bitmap files|*.bmp|PNG files|*.png"
'
'dlgOpen
'
Me.dlgOpen.DefaultExt = "bmp"
Me.dlgOpen.Filter = "Bitmap files|*.bmp|PNG files|*.png"
'
'frmScribble
'
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
Me.ClientSize = New System.Drawing.Size(500, 332)
Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.picDraw, Me.pnlOptions, Me.pnlTools})
Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle
Me.Menu = Me.mnuMain
Me.Name = "frmScribble"
Me.Text = "Scribble"
CType(Me.updShapeHeight, System.ComponentModel.ISupportInitialize).EndInit()
Me.updShapeHeight.ResumeLayout(False)
Me.pnlShapeOptions.ResumeLayout(False)
CType(Me.updShapeWidth, System.ComponentModel.ISupportInitialize).EndInit()
Me.updShapeWidth.ResumeLayout(False)
CType(Me.updPenWidth, System.ComponentModel.ISupportInitialize).EndInit()
Me.updPenWidth.ResumeLayout(False)
Me.pnlTools.ResumeLayout(False)
Me.pnlPenOptions.ResumeLayout(False)
CType(Me.updFontSize, System.ComponentModel.ISupportInitialize).EndInit()
Me.updFontSize.ResumeLayout(False)
Me.pnlOptions.ResumeLayout(False)
Me.pnlTextOptions.ResumeLayout(False)
Me.ResumeLayout(False)
End Sub
#End Region
#Region "Enumerations"
Public Enum DrawingTools
Pen
Shape
Text
End Enum
#End Region
#Region "Member variables for properties"
Private m_sFileName As String
Private m_bDrawing As Boolean
Private m_eCurrentTool As DrawingTools
#End Region
#Region "Private variables"
Private oGraphics As System.Drawing.Graphics
Private oTool As Object
Private sngX As Single
Private sngY As Single
#End Region
#Region "Properties"
Public Property FileName() As String
Get
Return m_sFileName
End Get
Set(ByVal Value As String)
m_sFileName = Value
End Set
End Property
Public Property Drawing() As Boolean
Get
Return m_bDrawing
End Get
Set(ByVal Value As Boolean)
m_bDrawing = Value
End Set
End Property
Public Property CurrentTool() As DrawingTools
Get
Return m_eCurrentTool
End Get
Set(ByVal Value As DrawingTools)
m_eCurrentTool = Value
'destroy the existing tool
If Not oTool Is Nothing Then
CType(oTool, IDisposable).Dispose()
End If
End Set
End Property
#End Region
#Region "Menu commands"
Private Sub mnuFileNew_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles mnuFileNew.Click
Me.oGraphics.Clear(Color.White)
'force the refresh
Me.picDraw.Refresh()
End Sub
Private Sub mnuFileOpen_Click()
If Me.dlgOpen.ShowDialog = DialogResult.OK Then
Me.picDraw.Image.FromFile(Me.dlgOpen.FileName)
End If
End Sub
Private Sub mnuFileSave_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles mnuFileSave.Click
Dim sFileName As String
Dim oFormat As System.Drawing.Imaging.ImageFormat
'get the filename to save to
If dlgSave.ShowDialog = DialogResult.OK Then
sFileName = dlgSave.FileName
Select Case dlgSave.FilterIndex
Case 0 'save as bitmap
oFormat = System.Drawing.Imaging.ImageFormat.Bmp
Case 1 'save as PNG
oFormat = System.Drawing.Imaging.ImageFormat.Png
Case Else
'should never happen
End Select
'possible exception on save
Try
Me.picDraw.Image.Save(sFileName, oFormat)
Catch ex As Exception
'just display for now
MessageBox.Show(ex.Message, "Error saving file", _
MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End If
End Sub
Private Sub mnuFileExit_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles mnuFileExit.Click
Me.Close()
End Sub
#End Region
#Region "PictureBox Event Handlers"
Private Sub picDraw_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles picDraw.MouseMove
If Me.Drawing Then
'this is only true if the current tool is a pen
oGraphics.DrawLine(oTool, sngX, sngY, e.X, e.Y)
sngX = e.X
sngY = e.Y
'force a redraw
Me.picDraw.Refresh()
End If
End Sub
Private Sub picDraw_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles picDraw.MouseUp
'we can stop drawing now
Me.Drawing = False
End Sub
Private Sub picDraw_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles picDraw.MouseDown
'start drawing
'Shape and Text are stamps, Pen works on MouseMove
'we need to create the tool and either draw it, or get ready to draw it
Select Case Me.CurrentTool
Case DrawingTools.Shape
Select Case Me.cboShapeType.Text
Case "Rectangle"
oGraphics.FillRectangle(New SolidBrush(Color.FromName(Me.cboColors.Text)), _
e.X, _
e.Y, _
Me.updShapeWidth.Value, _
Me.updShapeHeight.Value)
Case "Ellipse"
oGraphics.FillEllipse(New SolidBrush(Color.FromName(Me.cboColors.Text)), _
e.X, _
e.Y, _
Me.updShapeWidth.Value, _
Me.updShapeHeight.Value)
Case Else
End Select
'force a redraw
Me.picDraw.Refresh()
Case DrawingTools.Text
'create a font
oTool = New System.Drawing.Font(Me.cboTextFont.Text, Me.updFontSize.Value)
'draw the text at the current mouse location
oGraphics.DrawString(Me.txtText.Text, _
oTool, New SolidBrush(Color.FromName(Me.cboColors.Text)), _
e.X, e.Y)
'force a redraw
Me.picDraw.Refresh()
Case DrawingTools.Pen
'create the pen (for drawing in MouseMove)
oTool = New System.Drawing.Pen(Color.FromName(Me.cboColors.Text), Me.updPenWidth.Value)
sngX = e.X
sngY = e.Y
Me.Drawing = True
End Select
End Sub
#End Region
#Region "Other Event Handlers"
Private Sub frmScribble_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
'set up the Color ComboBox
FillLists()
'create the graphics we'll be drawing on
Me.picDraw.Image = New Bitmap(picDraw.Width, picDraw.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb)
Me.oGraphics = Graphics.FromImage(Me.picDraw.Image)
'set the background to white
Me.oGraphics.Clear(Color.White)
'set the initial tool to the Pen
optPen_Click(Nothing, Nothing)
End Sub
Private Sub optPen_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles optPen.Click
'set the tool to a pen
Me.CurrentTool = DrawingTools.Pen
'hide all the other tool's panels
pnlPenOptions.Visible = True
pnlShapeOptions.Visible = False
pnlTextOptions.Visible = False
End Sub
Private Sub optShape_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles optShape.Click
'set the tool to a Shape
Me.CurrentTool = DrawingTools.Shape
'hide all the other tool's panels
pnlPenOptions.Visible = False
pnlShapeOptions.Visible = True
pnlTextOptions.Visible = False
End Sub
Private Sub optText_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles optText.Click
'set the tool to Text
Me.CurrentTool = DrawingTools.Text
'hide all the other tool's panels
pnlPenOptions.Visible = False
pnlShapeOptions.Visible = False
pnlTextOptions.Visible = True
End Sub
#End Region
#Region "Assorted methods"
Private Sub FillLists()
With cboColors.Items
.Add("Black")
.Add("Red")
.Add("Green")
.Add("Blue")
End With
cboColors.SelectedIndex = 0
With cboShapeType.Items
.Add("Rectangle")
.Add("Ellipse")
End With
cboShapeType.SelectedIndex = 0
With cboTextFont.Items
.Add("Arial")
.Add("Times New Roman")
.Add("Courier New")
End With
cboTextFont.SelectedIndex = 0
End Sub
#End Region
End Class