已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C# GDI+编程(二)常用的绘图函数DrawArc绘制一个弧形示例:graphics.DrawArc(pen,0,0,200,200,90,120)倒数第二个参数,表示起始度数,最后一个参数是弧形的跨越度数。比如起始度数是90,跨越度数是120的弧形如下图:红色的是弧形。类似的方法还有DrawPie绘制一个扇形和FillPie填充一个扇形。都有起始度数,跨越度数。DrawPolygon绘制多边形示例:Pointpt=newPointnewPoint(0,50),newPoint(0,100),newPoint(100,100);graphics.DrawPolygon(pen,pt);Point数组指定每个点的位置,和点的数量。DrawPolygon绘制的多边形是闭合的,DrawPolygon会自动把第一点和最后一个点连接起来。DrawCurve绘制基数样条示例:Pointpt=newPointnewPoint(0,0),newPoint(100,50),newPoint(200,0);graphics.DrawCurve(pen,pt,1.5f);最后一个参数表示张力值,对这个绘制函数,具体我不是很了解,只能大概知道是怎么一回事。算是不能运用自如吧。至少要有三个点,才能构成一个曲线。可以看一个图,我从GDI+参考资料上复制过来的。张力值不同的曲线表现:DrawBezier绘制贝赛尔样条示例:graphics.DrawBezier(pen,100,0,200,20,0,80,100,100)贝塞尔样条是由四个点构成的。第一个点,和最后一个点充当直线的两点,而另外两个点充当磁铁的作用,虽然线条不经过这两个磁铁点,但这两个磁铁点会把线条往它那边吸。从而构成了贝赛尔样条。看图(左边图片来源:GDI+参考资料)两个贝塞乐样条示例:路径GraphicsPath可以到/3582077/blog/item/8e0204c245d82523e4dd3b47.html里了解一些概念,第九十二个函数。GraphicsPath类属性System.Drawing.Drawing2D命名空间路径是各种各样线条组成的,那么,矩形也可以看做是由四条直线组成的,圆形也可以看做是由几个弧形组成的。所以GraphicsPath类里就有了添加各种形状的路径函数,如AddLine直线路径,AddEllipse椭圆路径,AddRectangle矩形路径,AddBezier贝塞尔路径,AddString字符串路径等。这些路径添加进去了,当然是看不着的,我们可以用Graphics类里的DrawPath函数把路径的轨迹描述出来,用画笔。看示例:privatevoidformPaint(Objectsender,PaintEventArgse)Graphicsgraphics=e.Graphics;Penpen=newPen(Color.FromArgb(0,255,0),2);Rectanglerect=newRectangle(10,10,100,100);GraphicsPathgrcPath=newGraphicsPath();grcPath.AddRectangle(rect);grcPath.AddEllipse(rect);/添加字符串路径FontFamilyfamFont=newFontFamily(黑体);grcPath.AddString(A,famFont,(int)FontStyle.Underline,80f,rect,null);/绘制路径graphics.DrawPath(pen,grcPath);效果图:路径画刷PathGradientBrush使用示例:privatevoidformPaint(Objectsender,PaintEventArgse)/创建路径GraphicsPathpath=newGraphicsPath();Rectanglerect=newRectangle(0,0,100,100);path.AddRectangle(rect);/创建路径画刷PathGradientBrushbrush=newPathGradientBrush(path);/中心点颜色是白色brush.CenterColor=Color.White;/路径(点)上的颜色是黑色brush.SurroundColors=newColorColor.Black;/用路径画刷填充一个矩形e.Graphics.FillRectangle(brush,rect);效果图:上面的中心点颜色是白色,路径(点)上的颜色是黑色,也就是说,从中心点到每一个路径上的点,都是白到黑渐变的。另外也可以自己指定中心点,如果不想用PathGradientBrush计算的中心点,就指定CenterPoint,如brush.CenterPoint=newPoint(20,50);路径画刷多种颜色渐变多种颜色渐变在之前的线性渐变画里已经介绍过了,那么路径多种颜色渐变也是大同小异的,直接看示例吧:privatevoidformPaint(Objectsender,PaintEventArgse)/创建路径GraphicsPathpath=newGraphicsPath();Rectanglerect=newRectangle(0,0,100,100);path.AddRectangle(rect);/创建路径画刷PathGradientBrushbrush=newPathGradientBrush(path);/创建ColorBlend对象,指定多种颜色渐变信息ColorBlendcolor_blend=newColorBlend();/指定几种颜色color_blend.Colors=newColorColor.Red,Color.Green,Color.White;/指定颜色的范围color_blend.Positions=newfloat0/3f,2/3f,3/3f;brush.InterpolationColors=color_blend;/用路径画刷填充一个矩形e.Graphics.FillRectangle(brush,rect);效果图:中心点的颜色是color_blend.Colors数组的最后一个,像多种颜色渐变,你可以把中心点,到路径上的每一个点,看做一条条直线,然后这条线的3分之2是什么颜色到什么颜色渐变,3分之一又是哪种颜色到哪种颜色渐变。上面的是红到绿渐变范围是:02/3,绿到白(中心点颜色):2/31;假设整条直线的长度用1来代替。另外这个也可以自定义中心点位置。用点构成的路径画刷示例:privatevoidformPaint(Objectsender,PaintEventArgse)Rectanglerect=newRectangle(0,0,100,100);Pointpts=newPointnewPoint(50,0),newPoint(0,100),newPoint(100,100);PathGradientBrushbrush=newPathGradientBrush(pts);/中心点颜色brush.CenterColor=Color.White;/路径点上的颜色brush.SurroundColors=newColorColor.Black;e.Graphics.FillRectangle(brush,rect);效果图:这种用点构成的图形,是路径画刷直接创建的,没有通过GraphicsPath,也可以指定三个以上的点,路径画刷会自动把这些点连接起来(按顺序),构成一个图形的,然后再填充,但填充的范围只限于这些点构成的图形内。就像上面,是用这个画刷填充一个矩形,但超出这个三角图形的部分没有被填充。这个跟图形路径是一回事,只限于填充路径里面的。这个图形创建也可以通过GraphicsPath方式来完成,比如里面的添加AddPolygon多边形路径函数。然后再用Graphics类里的FillPolygon函数填充。另外也可以用AddLines添加路径函数来完成,这个函数是用直来组成的图形,但究其根底还是用点来组成的,两点构成一条直线嘛!不过组成的图形必须是闭合的,不然无法达到想要的结果。然后调用FillPath填充路径。AddLines示例:privatevoidformPaint(Objectsender,PaintEventArgse)/创建路径GraphicsPathpath=newGraphicsPath();Rectanglerect=newRectangle(0,0,100,100);Pointpts=newPointnewPoint(50,0),newPoint(0,100),newPoint(100,100);path.AddLines(pts);PathGradientBrushbrush=newPathGradientBrush(path);/中心点颜色brush.CenterColor=Color.White;/路径点上的颜色brush.SurroundColors=newColorColor.Black;e.Graphics.FillPath(brush,path);FillPath函数就像DrawPath一样,不过DrawPath是用画笔来描述路径的,而FillPath是用“填充”来描述路径的。注意FillPath填充的路径有一定的限制,闭合。不要起冲突。PathGradientBrush类里的SurroundColors属性成员,路径点上的多种颜色在之前,我只指定了一种颜色,SurroundColors是个Color数组,那么它就可以指定多种颜色。指定的是一个图形上角点的颜色,比如三角形,它有三个角,就可以给这三个角点指定不同的三种颜色,但不能是四种颜色,因为三角形只有三个角,超出范围了就会出错。矩形也一样的,可以指定四种颜色,但如果指定的颜色数量少于角点数,比如矩形,我只指定一个角点的颜色。那么剩下的角点都使用的都是SurroundColors数组最后一个颜色值。拿路径画刷的第一个例子来说,我们把它修改一下,指定四个角点的颜色。如下:privatevoidformPaint(Objectsender,PaintEventArgse)/创建路径GraphicsPathpath=newGraphicsPath();Rectanglerect=newRectangle(0,0,100,100);path.AddRectangle(rect);/创建路径画刷PathGradientBrushbrush=newPathGradientBrush(path);/中心点颜色是白色brush.CenterColor=Color.White;/指定不同角点的颜色brush.SurroundColors=newColorColor.Black,Color.Red,Color.Green,Color.Blue;/用路径画刷填充一个矩形e.Graphics.FillRectangle(brush,rect);效果图:四个角点处颜色,用眼睛可以看得出大概的区别,分别是黑,红,蓝,绿。对应着左上(0,0),右上(100,0),右下(100,100),左下(0,100)四个角点。再来说一下这个渐变画刷是怎么看的,或者说是依据什么来的。首先在SurroundColos指定了角点(0,0)为Color.Black,角点(100,0)为Color.Red,而这两个点可以连成一条直线。这条直线还是渐变的,从黑色到红色。并且这条直线是在路径上的。那么这条路径(直线)上的各个点就有不同的颜色了。比如(0,0)是黑色,(1,0)是淡一点的黑色,。(99,0)是暗红色(100,0)是红色。而中心点颜色是白色,这样中心点到0,0这条直线就是从白色到黑色渐变,而到(1,0)是从白色到淡一点的黑色渐变。其它角点上的渐变也是如此。按着这样规则就组成了上面的渐变。再来个三角形的例子:privatevoidformPaint(Objectsender,PaintEventArgse)/创建路径GraphicsPathpath=newGraphicsPath();Pointpts=newPointnewPoint(50,0),newPoint(0,100),newPoint(100,100);path.AddLines(pts);PathGradientBrushbrush=newPathGradientBrush(path);/中心点颜色白色brush.CenterColor=Color.White;/角点颜色:红,绿,蓝。按pts数组顺序依次brush.SurroundColors=newColorColor.Red,Color.Green,Color.Blue;/用路径画刷填充路径e.Graphics.FillPath(brush,path);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新能源开发项目合同范本及注意事项
- 我的超级好朋友作文9篇
- 社区服务志愿服务承诺书范文7篇
- 2025年矿山救护指挥员三级安全教育试卷及答案:指挥能力篇
- 基于微锥结构的光纤微光学技术:原理、特性与多元应用探究
- 电力变压器维护保养施工方案
- 公司管理岗位资格评定规范
- 合同事务年终总结报告
- 2025年企业内部劳务外包合同简易版
- 锂电池厂施工方案
- 《义务教育英语课程标准(2022年版)》测试题5套(含答案)
- 2024新《公司法》亮点全面解读课件
- 《两办意见》(关于进一步加强矿山安全生产工作的意见)培训课件2024
- 特种设备检验申请单
- 数学与土木工程的交叉应用
- 小学六年级数学上册应用题100道(全)-及答案
- 2023年延安市安塞区社区工作者招聘考试真题
- 全国主要水文站点及雨量观测分布和代码
- 2023年贵州省遵义市中考地理试卷真题(含答案)
- 儿童文学教程第2版(学前教育专业)PPT全套完整教学课件
- 中国绿色建筑三星认证标准
评论
0/150
提交评论