收藏 分享(赏)

GID+绘图方法.doc

上传人:hwpkd79526 文档编号:6628275 上传时间:2019-04-18 格式:DOC 页数:9 大小:260.50KB
下载 相关 举报
GID+绘图方法.doc_第1页
第1页 / 共9页
GID+绘图方法.doc_第2页
第2页 / 共9页
GID+绘图方法.doc_第3页
第3页 / 共9页
GID+绘图方法.doc_第4页
第4页 / 共9页
GID+绘图方法.doc_第5页
第5页 / 共9页
点击查看更多>>
资源描述

1、C# GDI+编程(二)常用的绘图函数DrawArc 绘制一个弧形示例:graphics.DrawArc(pen,0,0,200,200,90,120)倒数第二个参数,表示起始度数,最后一个参数是弧形的跨越度数。比如起始度数是 90,跨越度数是 120 的弧形如下图:红色的是弧形。类似的方法还有 DrawPie 绘制一个扇形和 FillPie 填充一个扇形。都有起始度数,跨越度数。DrawPolygon 绘制多边形示例: Point pt=new Pointnew Point(0,50),new Point(0,100),new Point(100,100);graphics.DrawPoly

2、gon(pen, pt);Point 数组指定每个点的位置,和点的数量。DrawPolygon 绘制的多边形是闭合的,DrawPolygon 会自动把第一点和最后一个点连接起来。DrawCurve 绘制基数样条示例:Point pt = new Point new Point(0, 0), new Point(100, 50),new Point(200,0);graphics.DrawCurve(pen, pt, 1.5f);最后一个参数表示张力值,对这个绘制函数,具体我不是很了解,只能大概知道是怎么一回事。算是不能运用自如吧。至少要有三个点,才能构成一个曲线。可以看一个图,我从 GDI+参

3、考资料上复制过来的。张力值不同的曲线表现:DrawBezier 绘制贝赛尔样条示例:graphics.DrawBezier(pen, 100, 0, 200, 20, 0, 80, 100, 100)贝塞尔样条是由四个点构成的。第一个点,和最后一个点充当直线的两点,而另外两个点充当磁铁的作用,虽然线条不经过这两个磁铁点,但这两个磁铁点会把线条往它那边吸。从而构成了贝赛尔样条。看图(左边图片来源:GDI+参考资料)两个贝塞乐样条示例:路径 GraphicsPath可以到 http:/ 里了解一些概念,第九十二个函数。GraphicsPath 类属性 System.Drawing.Drawing2

4、D 命名空间路径是各种各样线条组成的,那么,矩形也可以看做是由四条直线组成的,圆形也可以看做是由几个弧形组成的。所以 GraphicsPath 类里就有了添加各种形状的路径函数,如 AddLine 直线路径,AddEllipse 椭圆路径,AddRectangle 矩形路径,AddBezier 贝塞尔路径,AddString 字符串路径等。这些路径添加进去了,当然是看不着的,我们可以用 Graphics 类里的 DrawPath 函数把路径的轨迹描述出来,用画笔。看示例:private void formPaint(Object sender, PaintEventArgs e)Graphic

5、s graphics = e.Graphics;Pen pen = new Pen(Color.FromArgb(0, 255, 0), 2);Rectangle rect = new Rectangle(10, 10, 100, 100);GraphicsPath grcPath = new GraphicsPath();grcPath.AddRectangle(rect);grcPath.AddEllipse(rect);/添加字符串路径FontFamily famFont = new FontFamily(“黑体“);grcPath.AddString(“A“, famFont, (in

6、t)FontStyle.Underline, 80f, rect, null);/绘制路径graphics.DrawPath(pen, grcPath);效果图:路径画刷 PathGradientBrush使用示例:private void formPaint(Object sender, PaintEventArgs e)/创建路径GraphicsPath path = new GraphicsPath();Rectangle rect = new Rectangle(0, 0, 100, 100);path.AddRectangle(rect);/创建路径画刷PathGradientBru

7、sh brush = new PathGradientBrush(path);/中心点颜色是白色brush.CenterColor = Color.White;/路径(点)上的颜色是黑色brush.SurroundColors = new Color Color.Black ;/用路径画刷填充一个矩形e.Graphics.FillRectangle(brush, rect);效果图:上面的中心点颜色是白色,路径(点)上的颜色是黑色,也就是说,从中心点到每一个路径上的点,都是白到黑渐变的。另外也可以自己指定中心点,如果不想用 PathGradientBrush 计算的中心点,就指定CenterP

8、oint,如 brush.CenterPoint = new Point(20, 50);路径画刷多种颜色渐变多种颜色渐变在之前的线性渐变画里已经介绍过了,那么路径多种颜色渐变也是大同小异的,直接看示例吧:private void formPaint(Object sender, PaintEventArgs e)/创建路径GraphicsPath path = new GraphicsPath();Rectangle rect = new Rectangle(0, 0, 100, 100);path.AddRectangle(rect);/创建路径画刷PathGradientBrush br

9、ush = new PathGradientBrush(path);/创建 ColorBlend 对象,指定多种颜色渐变信息ColorBlend color_blend=new ColorBlend();/指定几种颜色color_blend.Colors=new ColorColor.Red,Color.Green,Color.White;/指定颜色的范围color_blend.Positions=new float0/3f,2/3f,3/3f;brush.InterpolationColors = color_blend;/用路径画刷填充一个矩形e.Graphics.FillRectangl

10、e(brush, rect);效果图:中心点的颜色是 color_blend.Colors 数组的最后一个,像多种颜色渐变,你可以把中心点,到路径上的每一个点,看做一条条直线,然后这条线的 3 分之 2 是什么颜色到什么颜色渐变,3 分之一又是哪种颜色到哪种颜色渐变。上面的是红到绿渐变范围是:02/3,绿到白(中心点颜色):2/31; 假设整条直线的长度用 1 来代替。另外这个也可以自定义中心点位置。用点构成的路径画刷示例:private void formPaint(Object sender, PaintEventArgs e)Rectangle rect = new Rectangle(

11、0, 0, 100, 100);Point pts=new Pointnew Point(50,0),new Point(0,100),new Point(100,100);PathGradientBrush brush=new PathGradientBrush(pts);/中心点颜色brush.CenterColor=Color.White;/路径点上的颜色brush.SurroundColors=new ColorColor.Black;e.Graphics.FillRectangle(brush, rect);效果图:这种用点构成的图形,是路径画刷直接创建的,没有通过 Graphics

12、Path,也可以指定三个以上的点,路径画刷会自动把这些点连接起来(按顺序),构成一个图形的,然后再填充,但填充的范围只限于这些点构成的图形内。就像上面,是用这个画刷填充一个矩形,但超出这个三角图形的部分没有被填充。这个跟图形路径是一回事,只限于填充路径里面的。这个图形创建也可以通过 GraphicsPath 方式来完成,比如里面的添加 AddPolygon 多边形路径函数。然后再用 Graphics 类里的 FillPolygon 函数填充。另外也可以用 AddLines 添加路径函数来完成,这个函数是用直来组成的图形,但究其根底还是用点来组成的,两点构成一条直线嘛!不过组成的图形必须是闭合的

13、,不然无法达到想要的结果。然后调用 FillPath 填充路径。AddLines 示例:private void formPaint(Object sender, PaintEventArgs e)/创建路径GraphicsPath path = new GraphicsPath();Rectangle rect = new Rectangle(0, 0, 100, 100);Point pts = new Point new Point(50, 0), new Point(0, 100), new Point(100, 100);path.AddLines(pts);PathGradient

14、Brush brush = new PathGradientBrush(path);/中心点颜色brush.CenterColor=Color.White;/路径点上的颜色brush.SurroundColors=new ColorColor.Black;e.Graphics.FillPath(brush, path);FillPath 函数就像 DrawPath 一样,不过 DrawPath 是用画笔来描述路径的,而 FillPath 是用“ 填充”来描述路径的。注意 FillPath 填充的路径有一定的限制,闭合。不要起冲突。PathGradientBrush 类里的 SurroundCo

15、lors 属性成员,路径点上的多种颜色在之前,我只指定了一种颜色,SurroundColors 是个 Color 数组,那么它就可以指定多种颜色。指定的是一个图形上角点的颜色,比如三角形,它有三个角,就可以给这三个角点指定不同的三种颜色,但不能是四种颜色,因为三角形只有三个角,超出范围了就会出错。矩形也一样的,可以指定四种颜色,但如果指定的颜色数量少于角点数,比如矩形,我只指定一个角点的颜色。那么剩下的角点都使用的都是 SurroundColors 数组最后一个颜色值。拿路径画刷的第一个例子来说,我们把它修改一下,指定四个角点的颜色。如下:private void formPaint(Obje

16、ct sender, PaintEventArgs e)/创建路径GraphicsPath path = new GraphicsPath();Rectangle rect = new Rectangle(0, 0, 100, 100);path.AddRectangle(rect);/创建路径画刷PathGradientBrush brush = new PathGradientBrush(path);/中心点颜色是白色brush.CenterColor = Color.White;/指定不同角点的颜色brush.SurroundColors = new Color Color.Black,

17、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,而这两个点可以连成一条直线。这条直线还是渐变的,从黑色到红色。并且这条直线是

18、在路径上的。那么这条路径(直线)上的各个点就有不同的颜色了。比如(0,0 )是黑色,( 1,0)是淡一点的黑色,。( 99,0)是暗红色(100,0 )是红色。而中心点颜色是白色,这样中心点到 0,0 这条直线就是从白色到黑色渐变,而到(1,0)是从白色到淡一点的黑色渐变。其它角点上的渐变也是如此。按着这样规则就组成了上面的渐变。再来个三角形的例子:private void formPaint(Object sender, PaintEventArgs e)/创建路径GraphicsPath path = new GraphicsPath();Point pts = new Point new

19、 Point(50, 0), new Point(0, 100), new Point(100, 100) ;path.AddLines(pts);PathGradientBrush brush=new PathGradientBrush(path);/中心点颜色白色brush.CenterColor=Color.White;/角点颜色:红,绿,蓝。按 pts 数组顺序依次brush.SurroundColors = new Color Color.Red, Color.Green, Color.Blue ;/用路径画刷填充路径e.Graphics.FillPath(brush, path);

20、效果图:了解上面的知识点后,可以试着做一个五角星图形的例子(用路径渐变画刷,并使用不同的角点颜色)。#.net分享到:举报 浏览(1553) 评论(1) 转载(4)你可能也喜欢 领雀嘴鹎(1) 赏樱花、观牡丹、看郁金香花儿开放(郁金香篇) 这里是北京:春意浓! 【亲近自然 】041 :乡愁的符号:金黄的油菜花 边走边看: 春花如歌 菜鸟掠影之樱花 C#网络编程(二)本文最近访客 6950091204 月 14 日 二十四桥水中月4 月 11 日 雨林 SHE3 月 30 日 柠檬茶 icel12 月 30 日 gw23888812 月 9 日 lxf_12012 月 2 日 憂11 月 24 日 要相信等待8 月 14 日评论

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报