版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、李英冰 副教授武汉大学测绘学院第6讲 GDI+与图形绘制Drawing2021年12月13日WUHAN UNIVERSITY学习内容一、绘图控件二、GDI+基础三、基本图形2WUHAN UNIVERSITY一、绘图控件1. Chart控件概述2. Chart控件属性3. 示例3图表控件作用:把数据和实验分析结果直观地表达出来常用图表控件:Mschart, Teechart, Zedgraph等1. Chart控件概述-4-Chart控件的创建-5-2. Chart控件属性图例Legend绘图区域ChartArea数据序列Series标题Title-6-添加或移除ChartArea成员对每个Ch
2、artArea进行属性修改n对齐n三维n外观n游标n杂项n轴绘图区域(ChartArea)集合编辑器-7-添加或移除Series成员修改每个Series的属性n标记n标签n标签外观n数据n图表n外观n轴数据序列(Series)集合编辑器-8-private void Plot(doublex, doubley) chart1.Series.Clear(); chart1.Series.Add(“P1”); for (int i = 0; i x.Length; i+) chart1.Series“P1”.Points.AddXY(xi, yi); chart1.Series“P1”.Chart
3、Type = SeriesChartType.Point; chart1.DataBind(); Chart示例Demo8-利用Mschart控件进行图形显示-9-WUHAN UNIVERSITY二、GDI+基础1.GDI+概述2.基本图形结构3.颜色控制4.Graphics类型和对象10图形设备图形设备接口接口GDI(Graphics Device Interface):是一个图形包,帮助开发人员进行绘图操作。微软完善GDI的性能和功能,形成新的GDI+ Graphics 类提供绘制到显示设备的方法1 GDI+概述概述应用程序GDI+打印机显示器文件-11-常用常用绘图类型和对象绘图类型和对
4、象 -12-字体的高级操作字体的高级操作基本基本绘图绘图功关的类功关的类、结构、枚举和结构、枚举和委托委托提供提供高级高级功能绘图功能绘图类类 图像处理图像处理 打印、打印打印、打印预预览等览等 预定义对话框预定义对话框、属性表属性表单等单等坐标用于表达所绘制图形的位置,默认时使用像素为单位三种坐标空间:n世界坐标世界坐标系系n设备坐标系设备坐标系:左上角的坐标为(0,0),向右为正,向下为正n页面坐标系页面坐标系坐标相关属性:nLeft :对象X坐标nTop : 对象Y坐标 nWidth :对象的宽度nHeight:对象的高度坐标空间-13-Point结构:表示一个点, X和Y属性是intP
5、ointF结构: X和Y属性是float【例】建立一个整数点iPoint和一个浮动点fPoint:Point iPoint= new Point(100, 200); PointF fPoint= new PointF(100.23F, 200.45F);iPoint.X=105; /改变iPoint的X值2 基本图形结构14Size:尺寸结构,以像素为单位,类型是intn属性Height:高度n属性Width:宽度SizeF:属性类型是float【例】Size s = new Size(20, 30); Size结构15指定矩形的坐标 有两个构造函数n参数是X坐标、Y坐标、宽度和高度n参数是
6、Point和Size结构 【例】Rectangle r1 = new Rectangle(10,20, 150, 100); Point p = new Point(1, 2);Size s = new Size(5, 6);Rectangle r2 = new Rectangle(p, s);if( r1.Contains(iPoint) ) /判断点是否在矩形内 p.X=106;Rectangle结构 16实例化一个点(200,300);实例化一个Size,高度为20,宽度为30;由点(10,20)和点(150,100)实例化一个 矩形;Point p = new Point(100, 2
7、00);Size s = new Size(20, 30); Rectangle r1 = new Rectangle(10,20, 150, 100); 活学活用-17-颜色都封装在Color结构中设置颜色方法:n使用使用Color对象的方法来设置颜色对象的方法来设置颜色n使用使用ColorTranslator对象的方法来设置颜色对象的方法来设置颜色n使用使用Color结构来设置颜色:结构来设置颜色:直接调用Color结构,如button1.ForeColor = Color.Red;n用用ColorDialog从调色板选择从调色板选择颜色颜色3 颜色控制(Color结构)-18-【例】创建
8、一Form程序,添加一个Button,在它的Click事件响应函数中添加代码:void button1_Click(object sender, EventArgs e) button1.ForeColor = Color.FromArgb(255, 0, 0); button1.BackColor = Color.Blue; 使用Color对象的方法来设置颜色FromArgb()方法中的(Red,Green,Blue)三个参数,分别代表红、绿、蓝颜色光的亮度-19-三种方法:三种方法:n用色彩值(范围为0-2563-1) button1.ForeColor =ColorTranslator.
9、FromOle(255);n用Html十六进制字符串: button1.ForeColor = ColorTranslator.FromHtml(#FFCCFF);n用Windows色彩值(0 x表十六进制) button1.ForeColor = ColorTranslator.FromWin32(0XFFCCFF); 使用ColorTranslator对象的方法来设置颜色-20-void textColorButton_Click( object sender, EventArgs e ) DialogResult result = colorChooser.ShowDialog(); i
10、f ( result = DialogResult.Cancel ) return; textColorButton.ForeColor = colorChooser.Color; 用用ColorDialog从调色板选择颜色从调色板选择颜色-21-图形操作步骤:n创建创建Graphics对象对象 n使用使用绘图对象绘图对象(例如Pen、Brush、Font、Color等类型的对象) 在在Graphics对象上绘制线条和形状,呈对象上绘制线条和形状,呈现文本或显示操作图像现文本或显示操作图像。Graphics建立画布对象,语法为: Graphics g=控件对象名称控件对象名称.CreateGr
11、aphics();4 Graphics类型和对象类型和对象 -22-Pen是笔类型,构造函数包含画笔的颜色和线条宽度 Pen p = new Pen(Color.Blue, 2);在定义好Pen对象以后,可以修改:p.Color = Color.Red; p.Width = 3;System.Drawing.Pens类中有很多预先设好的笔,宽度都是1像素Pen p1 = Pens.Red; /1像素线宽的红笔Pen p2 = Pens.Yellow; /1像素线宽的黄笔 Pen类型和类型和对象对象-23-void Form1_MouseDown(object sender, MouseEven
12、tArgs e) Graphics g = this.CreateGraphics(); Pen p = new Pen(Color.Blue, 2); g.DrawLine(p, 0, 0, 100, 100); g.Dispose(); 【例例】绘制直线绘制直线 -24-窗体移动、最大化等操作都可触发Paint事件,例:Paint事件private void Form1_Paint(object sender, PaintEventArgs e) Graphics g = e.Graphics; Pen p = new Pen(Color.Blue, 2); g.DrawLine(p, 0
13、, 0, 100, 100); 用Invalidate()触发Paint事件void Form1_MouseDown(object sender, MouseEventArgs e) Invalidate(); Paint事件事件-25-Brush画刷对象用来绘制实心、渐变的图形,如矩形、椭圆、扇形、多边形和封闭路径等。画刷对象是派生于System.Drawing.Brush类的实例画刷类型:nSolidBrush:用纯色纯色绘制nHatchBrush:选择预设图案预设图案绘制nTextureBrush:用纹理纹理(或图像)绘制nLinearGradientBrush:用渐变渐变混合种颜色混合
14、种颜色绘制nPathGradientBrush :基于自定义路径渐变颜色绘制Brush类型和类型和对象对象-26-指定区域用纯色填充由System.Drawing.Brush类的实例表示。例如:Brush b = new SolidBrush(Color.Orange); 例:用SolidBrush画刷填充一个矩形: Graphicsg=this.CreateGraphics(); Rectanglerect=newRectangle(10,10,50,50); Brush b = new SolidBrush(Color.Orange); g.FillRectangle(b,rect); S
15、olidBrush画画刷刷-27-HatchBrush对象是图案画刷。如HatchBrush hb = new HatchBrush(HatchStyle, ForeColor, BackColor);HatchStyle:画布上绘制的图案 ForeColor:前景色 BackColor:背景色 例:定义一个前景色为橙色、背景色为蓝色,图案为交叉的水平和垂直线的画刷:HatchBrush hb = new HatchBrush(HatchStyle.Cross, Color.Orange, Color.Blue); HatchBrush画画刷刷-28-void Form1_Paint(obje
16、ct sender, PaintEventArgs e) Graphics g = e.Graphics; var rect = new Rectangle(10,20, 50,50); rect.Width = rect.Height = 200; rect.Location = new Point(10, 30); var b2 = new TextureBrush (Image.FromFile(c:lily.jpg); g.FillRectangle(b2, rect); /用纹理画刷填充矩形 TextureBrush画画刷刷-29-创建一个Graphics对象,定义一只宽度为2的红色
17、画笔,然后在已经定义Graphics对象上画一条直线Graphics g = this.CreateGraphics(); Pen p = new Pen(Color.Red, 2);g.DrawLine(p, 0, 0, 100, 100); 活学活用-30-WUHAN UNIVERSITY三、基本图形绘制1.矢量图形2.字体与文本3.综合示例:简易画笔31在Graphics类中,定义了基本二维矢量图形的绘制方法一般形式是Draw*,它们包括:n画直线DrawLine(),n画直线段DrawLines(),n画弧DrawArc(),n画矩形DrawRectangle(),n画椭圆DrawEl
18、lipse(),n画曲线DrawCurve()等等。1 矢量矢量图形图形-32-void Form1_Paint(object sender, PaintEventArgs e) Graphics g = e.Graphics; varrect1=newRectangle(1,2,100,100); varrect2=newRectangle(110,2,150,100); Penpen=newPen(Color.Black,3); g.DrawArc(Pens.Red,rect1,30,180); g.DrawRectangle(pen,rect2); g.DrawEllipse(Pens.
19、Blue,rect2); 【例例】二维矢量图形的二维矢量图形的绘制绘制-33-Using System.Drawing.Drawing2D ;Void Form1_Paint(object sender, PaintEventArgs e) Graphics g = e.Graphics; Pen p = new Pen(Color.Blue, 4); p.DashStyle = DashStyle.Dot; g.DrawLine(p, 10, 10, 200, 10); p.DashPattern = new float 3, 1 ; g.DrawLine(p, 10, 30, 200, 30); p.DashStyle = DashStyle.Solid; p.EndCap = LineCap.ArrowAnchor; g.DrawLine(p, 10, 50, 200, 50); 【例例】绘制虚线和带箭头的绘制虚线和带箭头的直线直线定义虚线的样
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 封神线下营销方案(3篇)
- 平江庙会活动策划方案(3篇)
- 宿舍宠物活动方案策划(3篇)
- 外企渠道营销方案(3篇)
- 传媒全网营销方案(3篇)
- 提升施工方案质量(3篇)
- 施工方案讨论意见(3篇)
- 杆变施工方案(3篇)
- 毛石砌体施工方案(3篇)
- 法庭观摩活动方案策划(3篇)
- 最科学养羊技术
- 优质课一等奖初中家庭教育《青少年成才优秀家庭教育案例:家庭春雨 润物无声》
- 如何保证伙伴成功举绩
- GB/T 41155-2021烧结金属材料(不包括硬质合金)疲劳试样
- 发展经济学 马工程课件 0.绪论
- GB/T 17989.2-2020控制图第2部分:常规控制图
- GB 13614-2012短波无线电收信台(站)及测向台(站)电磁环境要求
- 风景园林工程课件第四章-园路
- (印刷服务项目投标)印刷服务质量保证措施
- 工程质量问责追责管理办法
- 合成生物学建物致知大有可为
评论
0/150
提交评论