收藏 分销(赏)

实训九-综合训练二.doc

上传人:仙人****88 文档编号:9457618 上传时间:2025-03-27 格式:DOC 页数:6 大小:247.50KB
下载 相关 举报
实训九-综合训练二.doc_第1页
第1页 / 共6页
实训九-综合训练二.doc_第2页
第2页 / 共6页
点击查看更多>>
资源描述
实训九 、综合训练二 多功能画图板 目的 掌握对话框、菜单、工具栏的进一步应用 掌握图形技术的应用。 问题 设计一个多功能画图板,能够在窗体上绘制各种图形,如直线、矩形、椭圆等,能够用橡皮擦进行修改,能够保存画好的图片,能够新建一张空白的画布,能够选择任意画笔颜色。 要求 窗体设计符合实训要求,布局合理,程序逻辑结构正确、合理,程序正确执行,满足宾馆管理的基本要求 解决方案 (1) 新建一个Windows应用程序,将其命名为“Drawing”,默认主窗体为Form1 (2) 在Form1窗体中添加控件,如图 Form1上控件的各属性如下表 控件名称 Name属性 Text属性 menuStrip1 menuStrip1 toolStrip1 toolStrip1 colorDialog1 colorDialog1 menuStrip1控件中,两个顶级菜单文件和颜色属性 控件名称 Name属性 Text属性 ToolStripMenuItem 文件ToolStripMenuItem 文件 ToolStripMenuItem 颜色ToolStripMenuItem 颜色 menuStrip1控件中,文件下拉菜单中的各项的属性 控件名称 Name属性 Text属性 ToolStripMenuItem 新建ToolStripMenuItem 新建 ToolStripMenuItem 保存ToolStripMenuItem  保存 ToolStripMenuItem 退出ToolStripMenuItem  退出 toolStrip1控件中,各项的属性 控件名称 Name属性 Text属性 toolStripButton pen 铅笔 toolStripButton line 直线 toolStripButton rectangle 矩形 toolStripButton ellipse 椭圆 toolStripButton rubber 橡皮擦 (1) 首先定义一些全局变量 在Form1.cs中定义如下全局变量 public partial class Form1 : Form { //布尔型变量,是否正在绘图 private bool isDrawing = false; //绘图时记录鼠标的位置 private Point startPoint, oldPoint; //枚举类型,各种绘图工具 private enum drawTools { Pen = 0, Line, Ellipse, Rectangle, String, Rubber, None }; //当前使用的工具 private drawTools drawTool = drawTools.None; //进行操作的位图 private Image myImage; //绘制位图的Graphics实例 private Graphics ig; //绘图使用的色彩 private Color foreColor = Color.Black; private Color backColor = Color.White; (2)为 “文件” 菜单中的“新建”菜单项编辑代码,用来新建一张空白的画布 Graphics graphcis = this.CreateGraphics(); graphcis.Clear(Color.White); myImage = new Bitmap(this.ClientRectangle.Width, this.ClientRectangle.Height); ig = Graphics.FromImage(myImage); ig.Clear(backColor); (3)为 “文件” 菜单中的“保存”菜单项编辑代码 saveFileDialog1.Filter = "图像(*.bmp)|*.bmp"; if (saveFileDialog1.ShowDialog() == DialogResult.OK) { myImage.Save(saveFileDialog1.FileName); } (5)为 “文件” 菜单中的“退出”菜单项编辑代码 private void 退出ToolStripMenuItem_Click(object sender, EventArgs e) { Application.Exit(); } (6) “颜色” 菜单项编辑代码,用于选择画笔的颜色 if(colorDialog1.ShowDialog()==DialogResult.OK) foreColor = colorDialog1.Color; 为工具条中各按钮的单击事件编辑代码,以铅笔单击事件为例 private void pen_Click(object sender, EventArgs e) { drawTool = drawTools.Pen; } (7)当在窗体上按下鼠标左键时执行的操作代码如下 private void Form1_MouseDown(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { isDrawing =true; startPoint.X = e.X; startPoint.Y = e.Y; oldPoint.X = e.X; oldPoint.Y = e.Y; } } (8)当在窗体上移动鼠标时执行的操作代码如下 private void Form1_MouseMove(object sender, MouseEventArgs e) { Graphics g; g = this.CreateGraphics(); //从上一个点到当前点绘制线段 if (drawTool == drawTools.Pen&&isDrawing==true) { g.DrawLine(new Pen(foreColor), oldPoint.X, oldPoint.Y, e.X, e.Y); ig.DrawLine(new Pen(foreColor), oldPoint.X, oldPoint.Y, e.X, e.Y); oldPoint.X = e.X; oldPoint.Y = e.Y; } //首先恢复此次操作之前的图像,然后再添加Line if (drawTool == drawTools.Line && isDrawing == true) { this.Form1_Paint(this, new PaintEventArgs(this.CreateGraphics(), this.ClientRectangle)); g.DrawLine(new Pen(foreColor), startPoint.X, startPoint.Y, e.X, e.Y); } //首先恢复此次操作之前的图像,然后再添加Ellipse if (drawTool == drawTools.Ellipse && isDrawing == true) { this.Form1_Paint(this, new PaintEventArgs(this.CreateGraphics(), this.ClientRectangle)); g.DrawEllipse(new Pen(foreColor), startPoint.X, startPoint.Y, e.X - startPoint.X, e.Y - startPoint.Y); } //首先恢复此次操作之前的图像,然后再添加Rectangle if (drawTool == drawTools.Rectangle && isDrawing == true) { this.Form1_Paint(this, new PaintEventArgs(this.CreateGraphics(), this.ClientRectangle)); g.DrawRectangle(new Pen(foreColor), startPoint.X, startPoint.Y, e.X - startPoint.X, e.Y - startPoint.Y); } //用背景色绘制宽线段 if (drawTool == drawTools.Rubber && isDrawing == true) { g.DrawLine(new Pen(backColor,20), oldPoint.X, oldPoint.Y, e.X, e.Y); ig.DrawLine(new Pen(backColor, 20), oldPoint.X, oldPoint.Y, e.X, e.Y); oldPoint.X = e.X; oldPoint.Y = e.Y; } } (9)当在窗体上松开鼠标左键时执行的操作代码如下 private void Form1_MouseUp(object sender, MouseEventArgs e) { isDrawing = false; if (drawTool == drawTools.Line ) ig.DrawLine(new Pen(foreColor), startPoint.X, startPoint.Y, e.X, e.Y); if (drawTool == drawTools.Rectangle) ig.DrawRectangle(new Pen(foreColor), startPoint.X, startPoint.Y, e.X - startPoint.X, e.Y - startPoint.Y); if(drawTool==drawTools.Ellipse) ig.DrawEllipse(new Pen(foreColor), startPoint.X, startPoint.Y, e.X - startPoint.X, e.Y - startPoint.Y); } (10)定义Form1_Paint事件中的代码,用于将将Image中保存的图像,绘制出来 //将Image中保存的图像,绘制出来 Graphics g = this.CreateGraphics(); if (myImage != null) { g.Clear(Color.White); g.DrawImage(myImage, this.ClientRectangle); } 四、测试程序运行结果
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服