版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1,第九讲 绘图,GDI+图形操作基础 绘图工具 图形绘制 非规则窗体,2008-9-9,中国地质大学(北京)人文经管学院 管理科学与工程教研室,2,10.1 GDI+图形操作基础,10.1.1 GDI+基础知识 GDI+在System.Drawing命名空间中定义,包含了图形处理的许多类,在图形开发中最常用的类如下 :,2008-9-9,中国地质大学(北京)人文经管学院 管理科学与工程教研室,3,图形绘制通过绘图函数来完成,绘图函数,以Draw为前缀的函数用于绘制图形 以Fill为前缀的函数用于区域填充,2008-9-9,中国地质大学(北京)人文经管学院 管理科学与工程教研室,4,Icon类
2、结构,Point结构:dim p as new point(x,y) Size结构:dim s as new size(w,h) Rectangle结构: dim rect as new rectangle(x,y,w,h) Color结构:fromArgb(int red,int green,int blue) formArgb(int alpha,color.颜色名) Color.formArgb(100,color.blue),2008-9-9,中国地质大学(北京)人文经管学院 管理科学与工程教研室,5,10.1.2坐标系,在GDI+中,对象坐标系是以像素(屏幕上的亮点)为单位,每个像素
3、都有一个坐标点与之对应。默认的坐标原点为对象的左上角,横向向右为X轴的正向,纵向向下为Y轴的正向。,绘制y=f(x)的图形,要产生与数学坐标系相同效果,需要移动坐标原点到对象的中心位置(a, b),在垂直方向翻转图形(y乘-1)。变换公式为: x1=a+x,y1=by,(x1, y1为实际绘图值 ),2008-9-9,中国地质大学(北京)人文经管学院 管理科学与工程教研室,6,Graphice对象坐标变换方法,2008-9-9,中国地质大学(北京)人文经管学院 管理科学与工程教研室,7,10.1.3 创建图形应用程序,使用GDI+在对象上绘制图形过程: 构造画布 用对象的CreateGraph
4、ics()方法构造Graphics类的实例: Dim 画布 As Graphics 画布 = 控件对象.CreateGraphics() 建立绘图工具(画笔、画刷、字体等) 调用绘图方法绘制图形 调用Dispose方法释放绘图对象,2008-9-9,中国地质大学(北京)人文经管学院 管理科学与工程教研室,8,创建图形应用程序,例10.1 建立画布,绘制一个椭圆和一行文字 在GDI+中用椭圆的外切矩形来定义椭圆的大小,并确定绘画位置。先指定一个矩形区域,然后用DrawEllipse方法画出椭圆;绘制文字需要声明字体对象和一把画刷,再调用DrawString方法在指定位置输出文字。,代码说明,20
5、08-9-9,中国地质大学(北京)人文经管学院 管理科学与工程教研室,9,10.2 绘图工具,10.2.1 画笔Pen Pen对象提供給绘图指令在Graphics画布上处理图形的轮廓部分。通过使用Pen类可以设置所画线条的颜色、线宽和样式,使用前请引用System.Drawing.Drawing2D名称空间。创建画笔的格式为: Dim 画笔对象 As New Pen(颜色, 线宽) 例 Dim p As New Pen(Color.Red, 5) 构造线宽5象素的红色画笔,2008-9-9,中国地质大学(北京)人文经管学院 管理科学与工程教研室,10,10.2.1 画笔Pen,画笔的DashS
6、tyle属性指定线的样式,虚线,设置一条直线的起始端和终止端的样式: 画笔对象.SetLineCap(StartCap, EndCap, DashCap) StartCap、EndCap为线段起终端的样式;DashCap为线段,2008-9-9,中国地质大学(北京)人文经管学院 管理科学与工程教研室,11,画笔Pen,例10.2用画笔画线 Dim g As Graphics 声明Graphics g = Me.CreateGraphics 构造画布g Dim p As New Pen(Color.Red, 5) 5象素的红色画笔 p.SetLineCap(LineCap.Flat, LineC
7、ap.ArrowAnchor, DashCap.Flat) 设置直线起终端的样式 g.DrawLine(p, 50, 10, 300, 10) 在画布上画有箭头的线 p.EndCap = LineCap.Flat 取消画笔终止端的样式 p.DashStyle = DashStyle.DashDot 设置点划线样式 p.Width = 2 设置线宽 2 象素 g.DrawLine(p, 50, 30, 300, 30) 在画布上画点划线,代码说明,2008-9-9,中国地质大学(北京)人文经管学院 管理科学与工程教研室,12,10.2.2 画刷Brush,画刷Brush主要用于封闭图形的填充 1
8、单色刷 只能用一种颜色填充区域 Dim sb As SolidBrush = New SolidBrush(Color.Blue) Dim sb As New SolidBrush(Color.Blue) 声明了一个蓝色的单色刷 sb 2纹理刷 用一个图片来填充图形 Dim tb As New TextureBrush(New Bitmap(“图片名”) 例使用一张图片创建的纹理刷 tb Dim tb As New TextureBrush(New Bitmap(icqface.gif),2008-9-9,中国地质大学(北京)人文经管学院 管理科学与工程教研室,13,画刷Brush,3渐变刷
9、用线性渐变色来填充图形 Dim lb As New LinearGradientBrush(Point1, Point2, Color1, Color2) 参数Point1、Point2构成一个矩形区域,Color1、Color2分别设置渐变的起始点颜色和终点颜色。 例 Dim lb As New LinearGradientBrush(pt1, pt2, Color.Blue, Color.White) 渐变刷lb 4网格刷 根据条纹模式来设置填充类型 Dim hb As New HatchBrush(条纹类型, 前景色, 背景色) 例 Dim hb As New HatchBrush(Ha
10、tchStyle.DarkHorizontal, Color.Blue, Color.Yellow) 网格刷hb,2008-9-9,中国地质大学(北京)人文经管学院 管理科学与工程教研室,14,画刷Brush,例10.3 演示渐变刷、网格刷、纹理刷三种画刷的效果,代码说明,2008-9-9,中国地质大学(北京)人文经管学院 管理科学与工程教研室,15,10.2.3 字体Font,字体Font类决定文本的字体格式(字体类型、大小以及风格)。用Font类的构造函数建立一种字体,需要3个参数: Dim 字体对象 As New Font(字体,大小,样式) 例: Dim f As New Font(仿
11、宋, 20, FontStyle.Bold) 构建字体工具f,书写20象素的仿宋粗体字,2008-9-9,中国地质大学(北京)人文经管学院 管理科学与工程教研室,16,10.3 图形绘制,1.绘制直线 Graphics对象.DrawLine (pen, point1, point2) 通过画笔设置所画线条的颜色、线宽和样式。例 : Dim g As Graphics g = Me.CreateGraphics Dim p As New Pen(Color.Black, 1) g.DrawLine(p, 10, 10, 100, 100),2008-9-9,中国地质大学(北京)人文经管学院 管理
12、科学与工程教研室,17,绘制弧线,Graphics对象.DrawArc(pen, rect, startangle, sweepangle) rect为Rectangle结构,指定圆的外切矩形区域; pen为画笔; startangle和sweepangle 为弧线起始角度和扫过的角度。 X轴的正向为0,顺时针方 向为正值,逆时针为負值,2008-9-9,中国地质大学(北京)人文经管学院 管理科学与工程教研室,18,绘制扇形,绘制扇形: Graphics对象.DrawPie (pen, rect, startangle, sweepangle) 填充扇形: Graphics对象.FillPie
13、 (brush, rect, startangle, sweepangle) brush为画刷,其他参数与DrawPie方法相同。,2008-9-9,中国地质大学(北京)人文经管学院 管理科学与工程教研室,19,绘制扇形例,Dim g As Graphics g = Me.CreateGraphics Dim p As New Pen(Color.Blue, 4) 画笔 Dim rect As New Rectangle(5, 5, 180, 180) g.DrawPie(p, rect, -45, -135) Dim hb As New HatchBrush(HatchStyle.Cross
14、, Color.Blue, Color.Yellow) 网格刷 g.FillPie(hb, rect, -45, -135),2008-9-9,中国地质大学(北京)人文经管学院 管理科学与工程教研室,20,绘制矩形,绘制矩形: Graphics对象. DrawRectangle (pen, rect) 填充矩形: Graphics对象. FillRectangle (brush, rect) 参数pen为画笔;rect为Rectangle结构,指定绘图区域。,2008-9-9,中国地质大学(北京)人文经管学院 管理科学与工程教研室,21,使用Alpha通道设置画刷的颜色,旋转画布。 Dim g
15、 As Graphics g = Me.CreateGraphics Dim p As New Pen(Color.Blue) Dim rect As New Rectangle(10, 40, 50, 80) 矩形区域 g.DrawRectangle(p, rect) 绘制矩形 rect.X = 50 : rect.Y = 70 改变矩形区域rect位置 g.RotateTransform(-30) 将画布逆时针旋转30度 Dim sb As New SolidBrush(Color.FromArgb(100, Color.Blue) 构造单色画刷 g.FillRectangle(sb, r
16、ect) 使用画刷填充 g.ResetTransform() 将画布复位,2008-9-9,中国地质大学(北京)人文经管学院 管理科学与工程教研室,22,绘制椭圆,绘制椭圆: Graphics对象. DrawEllipse (pen, rect) 填充椭圆: Graphics对象. FillEllipse (brush, rect) pen为画笔;rect为Rectangle结构,控制椭圆大小并指定绘图区域。,2008-9-9,中国地质大学(北京)人文经管学院 管理科学与工程教研室,23,Dim g As Graphics g = Me.CreateGraphics Dim p As New
17、Pen(Color.Blue) g.DrawEllipse(p, 5, 5, 50, 50) 画圆 Dim sb As New SolidBrush(Color.Blue) 构造单色画刷 g.FillEllipse(sb, 60, 0, 60, 80) 填充椭圆 Dim pt1 As New Point(12, 12) 声明坐标点 Dim pt2 As New Point(23, 33) Dim lb As New LinearGradientBrush( Pt1, Pt2, Color.White, Color.Red) 构造渐变画刷 g.FillEllipse(lb, 120, 0, 80
18、, 60) 填充椭圆,2008-9-9,中国地质大学(北京)人文经管学院 管理科学与工程教研室,24,绘制文字,文字绘制: Graphics对象. DrawString (string, font, brush, point) 其中,string为要绘制的文字内容;font为字体工具;brush为画刷;point为起点坐标。,2008-9-9,中国地质大学(北京)人文经管学院 管理科学与工程教研室,25,例10.4 在窗体上输出阴影文字效果。 阴影效果其实质是将同一文本内容显示两遍,利用位置的相错和颜色的变化来实现。以下代码将产生阴影文字效果: Dim g As Graphics g = Me
19、.CreateGraphics Dim f As New Font(宋体, 50, FontStyle.Bold) Dim sb1 As New SolidBrush(Color.Black) 构造画刷 Dim sb2 As New SolidBrush(Color.FromArgb(100, Color.Black) 构造画刷sb2 g.DrawString(阴影效果, f, sb2, 33, 43) g.DrawString(阴影效果, f, sb1, 30, 40),2008-9-9,中国地质大学(北京)人文经管学院 管理科学与工程教研室,26,10.4 非规则窗体,窗体对象的Regio
20、n属性可改变窗体外形。将Region属性设置成椭圆或其他形状,就可获得特殊形状窗体的效果。设置Region = Nothing,可恢复窗体的原始形状。 例10.5 建立椭圆窗体和菱形窗体。,2008-9-9,中国地质大学(北京)人文经管学院 管理科学与工程教研室,27,例10.5步骤: 添加PictureBox控件,为其指定一张图片 图形框填充整个窗体 设定Dock属性为Fill 图片能自动缩放 设定图形框的SizeMode属性为Stretchimage 使用GDI+的GraphicsPath对象,得到特殊形状区域的轮廓线,2008-9-9,中国地质大学(北京)人文经管学院 管理科学与工程教研
21、室,28,椭圆窗体实现,用窗体的宽与高控制椭圆大小 构造GraphicsPath对象gp Dim gp As GraphicsPath= New GraphicsPath 将椭圆轮廓线赋予gp gp.AddEllipse(New Rectangle(0, 0, Me.Width, Me.Height) 设置Region属性 Me.Region = New Region(gp),2008-9-9,中国地质大学(北京)人文经管学院 管理科学与工程教研室,29,菱形窗体实现,需要设置菱形4个角的坐标点 Dim points(3) As PointF 声明PointF数组对象 Points(0) =
22、New PointF(0, Me.Height / 2) Points(1) = New PointF(Me.Width / 2, 0) Points(2) = New PointF(Me.Width, Me.Height / 2) Points(3) = New PointF(Me.Width / 2, Me.Height) gp.AddPolygon(Points) 将菱形轮廓线赋予gp Me.Region = New Region(gp) 设置Region属性,2008-9-9,中国地质大学(北京)人文经管学院 管理科学与工程教研室,30,非规则窗体透明度,窗体对象的Opacity 属性改变窗体的透明度 代码格式 Me.Opacity =值 Opacity属性值为1 窗体不透明 Opacity属性值为0 窗体完全透明 技巧:在时钟控件的Tick事件中改变Opacity属性值,可实现窗体的淡入淡出效果,2008-9-9,中国地质大学(北京)人文经管学院 管理科学与工程教研室,31,非规则窗体,Dim text_path As GraphicsPath Dim text_reg
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 木作文物修复师工作效率竞赛考核试卷含答案
- 烧结配料工岗位教育考核试卷含答案
- 印花色浆配制操作工岗中专项能力考核试卷含答案
- 2026年智能装备运维高级专家招聘笔试试卷 招录14人
- 2026年投行数字化高级咨询师招聘笔试试卷 招录11人完整题库
- 2026年微电网高级架构师招聘笔试试卷 招录11人王牌题库
- 公路工程管理用表范本交通标志质量检验报告单模板
- 六年级《上册语文》期末试卷【及答案】
- 2026年河南省禹州市高三数学下册期末考试模拟测试卷完整附答案
- 2026年江苏省兴化市高三数学下册期末考试模拟检测卷(研优卷)附答案
- 今天你光盘了吗 - 世界粮食日主题课件
- 肩周炎中医护理
- 2026中国生物医药产业发展动态及投资前景预测报告
- 6.2 民主政治不断发展 课件(内嵌视频)2026-2027学年统编版道德与法治九年级上册
- 2026年司法考试《刑法》专项训练卷(附答案)
- 2026年低压电工证考试试题及答案
- 2026年广西壮族自治区百色市辅警招聘试题及答案
- 患者十大安全目标2025版(新)
- 重大会议保障及应急处置工作指南
- 2026秋统编版九年级上册道德与法治全册背诵提纲
- 2026年病理生理学试题题库(含答案)
评论
0/150
提交评论