为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > 用VB编写画图程序

用VB编写画图程序

2021-10-03 2页 doc 212KB 43阅读

用户头像 个人认证

海上生明花

暂无简介

举报
用VB编写画图程序11.6.2 编写一个仿Windows画图程序(1)本例将实现11.1节中的一个仿Windows的简单的画图软件的任务。1.新建项目创建一个项目类型为VisualBasic,模板为Windows应用程序的项目,命名为Ch11_5。2.界面设计在窗体上添加:一个MenuStrip菜单控件、一个ToolStrip工具栏控件,一个用作绘图板的PictureBox图片框控件、两个让用户选择颜色和线条宽标志的Lable控件、5个让用户选择线条宽度的button控件,一个Panel控件上、一个ImageList控件和一个作为状态信息栏的S...
用VB编写画图程序
11.6.2 编写一个仿Windows画图程序(1)本例将实现11.1节中的一个仿Windows的简单的画图软件的任务。1.新建项目创建一个项目类型为VisualBasic,为Windows应用程序的项目,命名为Ch11_5。2.界面设计在窗体上添加:一个MenuStrip菜单控件、一个ToolStrip工具栏控件,一个用作绘图板的PictureBox图片框控件、两个让用户选择颜色和线条宽标志的Lable控件、5个让用户选择线条宽度的button控件,一个Panel控件上、一个ImageList控件和一个作为状态信息栏的StatusStripr。调整窗体上各控件的大小及位置,如图11-18所示。HYPERLINK"http://images.51cto.com/files/uploadimg/20090902/1106240.jpg"\t"_blank" HYPERLINK"http://images.51cto.com/files/uploadimg/20060921/153223104.gif"\t"_blank"图11-18 画图程序主界面3.设置各控件的相关属性设置各控件的相关属性,如表11-9所示。表11-9 画图程序各控件属性设置HYPERLINK"http://images.51cto.com/files/uploadimg/20090902/1106240.jpg"\t"_blank" HYPERLINK"http://images.51cto.com/files/uploadimg/20090902/113009294.jpg"\t"_blank"HYPERLINK"http://images.51cto.com/files/uploadimg/20090902/1106240.jpg"\t"_blank" HYPERLINK"http://images.51cto.com/files/uploadimg/20090902/113009294.jpg"\t"_blank"4.代码设计(1)引入命名空间:ImportsSystem.Drawing.Drawing2D(2)在FrmPaint类里定义全局变量和mSelect枚举结构:Private g As Graphics                   '绘图句柄 Private pstart As Point, pend As Point  '定义画图的起始点,终点 Private mChoice As Integer              '选择图形枚举 Private mWidth As Integer               '画笔宽度 Private mIcon As Icon                       '用户选择图标 Private Enum mSelect                        '选择图形类别枚举      Pencil                                 '铅笔      Line                                   '直线      Ellipse                                '椭圆      FillEllipse                            '填充椭圆      StyleEllipse                       '风格椭圆      Rec                                    '矩形      FillRec                                '填充矩形      StyleRec                               '风格矩形      Icon                                   '图标      Eraser                                 '橡皮 EndEnum(3)在FrmPaint的Load事件中初始化全局变量和Graphics对象:Private Sub FrmPaint_Load(ByVal sender As System.Object, _      ByVal e As System.EventArgs) Handles MyBase.Load       g = Me.picPaint.CreateGraphics '获取PictureBox的绘图句柄      mChoice = mSelect.Pencil           '默认选择选铅笔作为绘图工具      mWidth = 1                             '初始化画笔宽度 End Sub (4)定义转换坐标起点和终点的过程Convert_Point()。转换坐标起始点和终点,确保起始点始终在终点的左上方,代码如下:'确保起始点坐标位于左上角     '结束点坐标位于右下角     Private Sub Convert_Point()         Dim ptemp As Point          '用于交换的临时点         If pstart.X < pend.X Then             If pstart.Y > pend.Y Then                 ptemp.Y = pstart.Y                 pstart.Y = pend.Y                 pend.Y = ptemp.Y             End If         End If         If pstart.X > pend.X Then             If pstart.Y < pend.Y Then                 ptemp.X = pstart.X                 pstart.X = pend.X                 pend.X = ptemp.X             End If             If pstart.Y > pend.Y Then                 ptemp = pstart                 pstart = pend                 pend = ptemp             End If         End If     End Sub (5)为工具栏ItemClick事件编写代码:Private Sub tsPaint_ItemClicked(ByVal sender As System.Object, _     ByVal e As System.Windows.Forms.ToolStripItemClickedEventArgs) Handles tsPaint.ItemClicked     '获取发生事件的索引号     Me.mChoice = Me.tsPaint.Items.IndexOf(e.ClickedItem)     If mChoice = mSelect.Icon Then         '如果选择的是图标,则打开OpenFileDialog选取图标         Dim dlgOpen As New OpenFileDialog         dlgOpen.Filter = "图标文件|*.ico"         If dlgOpen.ShowDialog = Windows.Forms.DialogResult.OK Then             mIcon = New Icon(dlgOpen.FileName)         End If     End If (6)为btnSetColor控件的Click事件,编写代码,选择画笔颜色,代码如下:Private Sub btnSetColor_Click(ByVal sender As System.Object, _     ByVal e As System.EventArgs) Handles btnSetColor.Click     '打开"颜色"对话框     Dim dlgColor As New ColorDialog     If dlgColor.ShowDialog = Windows.Forms.DialogResult.OK Then         Me.btnSetColor.BackColor = dlgColor.Color     End If End Sub (7)编写选择线条宽度的共享事件过程btnLines_Click()代码:Private Sub btnLine_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _      Handles btnLine1.Click, btnLine2.Click, btnLine3.Click, btnLine4.Click, btnLine5.Click      '把所有按钮的背景色都设为Black     Me.btnLine1.BackColor = Color.White     Me.btnLine2.BackColor = Color.White     Me.btnLine3.BackColor = Color.White     Me.btnLine4.BackColor = Color.White     Me.btnLine5.BackColor = Color.White      '用户选中的按钮背景色为Blue     CType(sender, Button).BackColor = Color.Black      '把画笔宽度设为用户选择按钮的Tag值     mWidth = CType(sender, Button).Tag End Sub (8)为PictrueBox的MouseDown(鼠标按下)事件编写代码。在FrmPaint的代码窗口顶部的"对象"下拉列表框中选择picPaint,然后在右侧的"事件"下拉列表框中选择MouseDown,此时代码编辑器中已经自动生成了picPaint_MouseUp的事件代码,并把鼠标定位于事件过程内部的第一行,在该过程中编写如下代码:Private Sub picPaint_MouseDown(ByVal sender As System.Object, _     ByVal e As System.Windows.Forms.MouseEventArgs) Handles picPaint.MouseDown     If e.Button = Windows.Forms.MouseButtons.Left Then          '如果用户按下的是鼠标左键,则将当前点坐标赋给起始点         pstart.X = e.X         pstart.Y = e.Y     End If End Sub 11.6.2 编写一个仿Windows画图程序(3)(9)为PictrueBox的MouseUp(鼠标释放)事件编写代码:Private Sub picPaint_MouseUp(ByVal sender As System.Object, _     ByVal e As System.Windows.Forms.MouseEventArgs) Handles picPaint.MouseUp      If e.Button = Windows.Forms.MouseButtons.Left Then         '如果用户按下的是鼠标左键,终点坐标         pend.X = e.X         pend.Y = e.Y         '根据保存的mChoice绘制图形         Select Case mChoice             Case mSelect.Line '用户在工具栏中选择的是铅笔                 Dim myPen As New Pen(Me.btnSetColor.BackColor, mWidth)                 g.DrawLine(myPen, pstart, pend) '根据起点和终点绘制直线              Case mSelect.Rec    '用户在工具栏中选择的是空心矩形                 Convert_Point()     '转换矩形的起点为其左上点                 Dim myPen As New Pen(Me.btnSetColor.BackColor, mWidth)                 g.DrawRectangle(myPen, pstart.X, pstart.Y, _                 pend.X - pstart.X, pend.Y - pstart.Y)  '根据起点和终点绘制空心矩形              Case mSelect.FillRec    '用户在工具栏中选择的是填充矩形                 Convert_Point()     '转换矩形的起点为其左上点                 Dim rec As New Rectangle(pstart.X, pstart.Y, _                 pend.X - pstart.X, pend.Y - pstart.Y) '根据起点和终点定义矩形                 Dim sbr As New SolidBrush(btnSetColor.BackColor) '定义画刷颜色为用户选择的颜色                 g.FillRectangle(sbr, rec) '绘制填充矩形              Case mSelect.StyleRec   '用户在工具栏中选择的是风格矩形                 Convert_Point()     '转换矩形的起点为其左上点                 Dim rec As New Rectangle(pstart.X, pstart.Y, _                 pend.X - pstart.X, pend.Y - pstart.Y)    '根据起点和终点定义矩形                 ' 定义画刷风格为Cross型,前景色为白色,背景色为用户选择                 Dim hbr As New HatchBrush(HatchStyle.Cross, Color.White, btnSetColor.BackColor)                 g.FillRectangle(hbr, rec) '用画刷填充矩形              Case mSelect.Ellipse '用户在工具栏中选择的是空心椭圆                 Convert_Point() '转换椭圆外接矩形的起点为其左上点                 Dim pen1 As New Pen(btnSetColor.BackColor, mWidth)                 g.DrawEllipse(pen1, pstart.X, pstart.Y, _                 pend.X - pstart.X, pend.Y - pstart.Y) '根据椭圆外接矩形的起点和终点绘制椭圆              Case mSelect.FillEllipse '用户在工具栏中选择的是填充椭圆                 Convert_Point() '转换椭圆外接矩形的起点为其左上点                 Dim rec As New Rectangle(pstart.X, pstart.Y, _                 pend.X - pstart.X, pend.Y - pstart.Y) '定义椭圆的外接矩形                 Dim sbr As New SolidBrush(btnSetColor.BackColor) '定义画刷颜色为用户选择的颜色                 g.FillEllipse(sbr, rec) '用画刷填充矩形              Case mSelect.StyleEllipse   '用户在工具栏中选择的是风格椭圆                 Convert_Point()     '转换椭圆外接矩形的起点为其左上点                 Dim rec As New Rectangle(pstart.X, pstart.Y, _                  pend.X - pstart.X, pend.Y - pstart.Y)  '定义椭圆的外接矩形                 ' 定义画刷风格为Cross型,前景色为白色,背景色为用户选择                 Dim hbr As New HatchBrush(HatchStyle.Cross, Color.White, btnSetColor.BackColor)                 g.FillEllipse(hbr, rec) '用画刷填充矩形         End Select     End If End Sub (10)为PictrueBox的MouseMove(鼠标移动)事件编写代码:Private Sub picPaint_MouseMove(ByVal sender As System.Object, _     ByVal e As System.Windows.Forms.MouseEventArgs) Handles picPaint.MouseMove     If e.Button = Windows.Forms.MouseButtons.Left Then         '如果用户按下的是鼠标左键,根据保存的mChoice绘制图形         Select Case mChoice             Case mSelect.Pencil     '用户在工具栏中选择的是铅笔                 Dim pen1 As New Pen(btnSetColor.BackColor, mWidth)                 pend.X = e.X                 pend.Y = e.Y                 g.DrawLine(pen1, pstart, pend)                 pstart = pend '将已经绘制的终点作为下一次的绘制的起点             Case mSelect.Eraser '用户在工具栏中选择的是橡皮                 Dim myPen As New Pen(Color.White, mWidth) '定义白色画笔作为擦除效果                 pend.X = e.X                 pend.Y = e.Y                 g.DrawLine(myPen, pstart, pend) '将已经绘制的终点作为下一次绘制的起点                 pstart = pend   '将已经绘制的终点作为下一次绘制的起点         End Select     End If End Sub (11)为PictrueBox的Mouse的Click(鼠标单击)事件编写代码:Private Sub picPaint_Click(ByVal sender As System.Object, _     ByVal e As System.EventArgs) Handles picPaint.Click     If mChoice = mSelect.Icon Then         '画图标         g.DrawIcon(mIcon, pstart.X, pstart.Y)     End If End Sub (12)为"新建"miNew的Click事件编写代码:Private Sub miNew_Click(ByVal sender As System.Object, _      ByVal e As System.EventArgs) Handles miNew.Click       Me.picPaint.Refresh() End Sub (13)为"退出"菜单miExit的Click事件编写代码:Private Sub miExit_Click(ByVal sender As System.Object, _      ByVal e As System.EventArgs) Handles miExit.Click      Application.Exit() End Sub (14)调试运行程序。至此,一个简单的绘图软件的代码编写完成,按F5键或工具栏上的"运行"按钮,即可运行程序,绘制图形后结果如图11-19所示。 HYPERLINK"http://book.51cto.com/files/uploadimg/20060921/153223104.gif"\t"_blank"(点击查看大图)图11-19 画笔软件运行结果
/
本文档为【用VB编写画图程序】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索