GDI+学习及代码总结之------画刷Brush.docx

上传人:A*** 文档编号:142724949 上传时间:2020-08-22 格式:DOCX 页数:22 大小:825.43KB
返回 下载 相关 举报
GDI+学习及代码总结之------画刷Brush.docx_第1页
第1页 / 共22页
GDI+学习及代码总结之------画刷Brush.docx_第2页
第2页 / 共22页
GDI+学习及代码总结之------画刷Brush.docx_第3页
第3页 / 共22页
GDI+学习及代码总结之------画刷Brush.docx_第4页
第4页 / 共22页
GDI+学习及代码总结之------画刷Brush.docx_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《GDI+学习及代码总结之------画刷Brush.docx》由会员分享,可在线阅读,更多相关《GDI+学习及代码总结之------画刷Brush.docx(22页珍藏版)》请在金锄头文库上搜索。

1、GDI+学习及代码总结之-画刷Brush画刷BrushGDI+中定义了五种画刷类型,他们都派生于Brush类,他们分别是:注意:画刷与画笔不同,画刷只是用来填充区域,所以,画刷无宽度、长度可言。单色画刷SolidBrush一、构造函数SolidBrush greenBrush(Color(255,0,255,0); /在GDI+中颜色值,没有RGB()构造,只能用Color()构造二、所使用的填充函数graphics.FillClosedCurve();/填充闭合曲线graphics.FillEllipse(); /填充椭圆graphics.FillPath(); /填充路径graphics.

2、FillPie(); /填充扇形graphics.FillPolygon(); /填充多边形graphics.FillRectangle(); /填充矩形graphics.FillRectangles(); /填充矩形集graphics.FillRegion(); /填充区域对于这些区域填充函数的使用,已经在前面讲过了,大家可以参考GDI+学习及代码总结之-画线、区域填充、写字这一篇文章影线画刷HatchBrush影线画刷,故名思意,就是用前景色与背景色,根据预定好的横线、竖线及斜线组成的图形,影线画刷用HatchBrush定义,其构造函数为:HatchBrush:HatchBrush(hat

3、chStyle, foreColor, backColor);/hatchstyle是一个枚举类,枚举了53种风格的影线画刷,forColor:前景色 ,backColor:背景色大家看hatchStyle定义:enum HatchStyle HatchStyleHorizontal = 0, HatchStyleVertical = 1, HatchStyleForwardDiagonal = 2, HatchStyleBackwardDiagonal = 3, HatchStyleCross = 4, HatchStyleDiagonalCross = 5, HatchStyle05Per

4、cent = 6, HatchStyle10Percent = 7, HatchStyle20Percent = 8, HatchStyle25Percent = 9, HatchStyle30Percent = 10, HatchStyle40Percent = 11, HatchStyle50Percent = 12, HatchStyle60Percent = 13, HatchStyle70Percent = 14, HatchStyle75Percent = 15, HatchStyle80Percent = 16, HatchStyle90Percent = 17, HatchSt

5、yleLightDownwardDiagonal = 18, HatchStyleLightUpwardDiagonal = 19, HatchStyleDarkDownwardDiagonal = 20, HatchStyleDarkUpwardDiagonal = 21, HatchStyleWideDownwardDiagonal = 22, HatchStyleWideUpwardDiagonal = 23, HatchStyleLightVertical = 24, HatchStyleLightHorizontal = 25, HatchStyleNarrowVertical =

6、26, HatchStyleNarrowHorizontal = 27, HatchStyleDarkVertical = 28, HatchStyleDarkHorizontal = 29, HatchStyleDashedDownwardDiagonal = 30, HatchStyleDashedUpwardDiagonal = 31, HatchStyleDashedHorizontal = 32, HatchStyleDashedVertical = 33, HatchStyleSmallConfetti = 34, HatchStyleLargeConfetti = 35, Hat

7、chStyleZigZag = 36, HatchStyleWave = 37, HatchStyleDiagonalBrick = 38, HatchStyleHorizontalBrick = 39, HatchStyleWeave = 40, HatchStylePlaid = 41, HatchStyleDivot = 42, HatchStyleDottedGrid = 43, HatchStyleDottedDiamond = 44, HatchStyleShingle = 45, HatchStyleTrellis = 46, HatchStyleSphere = 47, Hat

8、chStyleSmallGrid = 48, HatchStyleSmallCheckerBoard = 49, HatchStyleLargeCheckerBoard = 50, HatchStyleOutlinedDiamond = 51, HatchStyleSolidDiamond = 52, HatchStyleTotal, HatchStyleLargeGrid = HatchStyleCross, HatchStyleMin = HatchStyleHorizontal, HatchStyleMax = HatchStyleTotal - 1;这个定义有些长,而且让人搞不懂他们分

9、别对应什么图形,让我们看下面的图像,他们从左至右、从上到下排列,序号分别是0-52,(前景色为:红色,背景色为:绿色),CSDN处理的有些失真,大家可以在MSDN上看下这个枚举类,有对应的图形。我们简单使用一下影线画刷,用它来填充两个矩形,示例:Color forColor(255,0,0,0);Color bkColor(255,255,0,255);HatchBrush brush(HatchStyleHorizontal, forColor, bkColor);graphics.FillRectangle(&brush, 20, 20, 100, 50);HatchBrush brush

10、1(HatchStyleVertical, forColor, bkColor);graphics.FillRectangle(&brush1, 140, 20, 100, 50);影线画刷的单个与整体从构成上看,影线画刷是小正方形图案的简单重复,单个的正方形图案决定了画刷的整体外观。下图所示为影线画刷的基本构成:左图所示是影线画刷放大后的基本图案,该图案由前景色和背景色两部分构成。右图,就是由这些个小的基本图案重复而成。上面所枚举的53种图案,都是由它自己的基本图案重复平铺而成。设置影线画刷的绘制原点绘制原点,即在什么地方开始绘制,它并不是指相对所要填充的矩形原点的填充位置,而是对基本图案而

11、言的。设置绘制原点的语句为:Graphics:SetRenderingOrigin(x, y);/X为相对X轴方向的偏移量,Y为相对Y轴方向的偏移量如果我们设置这样一条语句,setRenderingOrigin(0,3);会是什么效果呢?看下面讲解;我们说了,是相对基本图案而言,我们还是3-13的图,所以,它先从基本图案的纵向偏移3个相素,然后用偏移后的图案开始绘制示例:(向下偏移4个相素)HatchBrush hatchBrush( HatchStyle(52), Color(255, 255, 0, 0), / red Color(255, 0, 255, 255); / aquagrap

12、hics.FillRectangle(&hatchBrush, 0, 0, 100, 50);/未偏移前graphics.SetRenderingOrigin(0,4);graphics.FillRectangle(&hatchBrush, 120, 0, 100, 50);/偏移4个相素纹理画刷TextureBrush纹理画刷,与影线画刷类似,也是使用同样的基本图案在水平和垂直方向上按一定的顺序平铺。不同的是,纹理画刷使用的是基本的图像来做基本图案的。一、构造函数(待完)TextureBrush(Image* image, Rect& dstRect, ImageAttributes* im

13、ageAttributes) TextureBrush(Image* image, RectF& dstRect, ImageAttributes* imageAttributes) TextureBrush(image, wrapMode) TextureBrush(Image* image, WrapMode wrapMode, Rect& dstRect) TextureBrush(Image* image, WrapMode wrapMode, RectF& dstRect) TextureBrush(Image* image, WrapMode wrapMode, INT dstX,

14、 INT dstY, INT dstWidth, INT dstHeight) TextureBrush(Image* image, WrapMode wrapMode, REAL dstX, REAL dstY, REAL dstWidth, REAL dstHeight) 这里不考虑对于ImageAttributes的设置(后面补充),只考虑除第一个外的其它五个构造函数的使用。参数说明:image:指定纹理画刷所使用的源图像,但这个图像并不一定是最终用来画图所用的图像,这只是一个源图,dstRect所指定的区域才是最终所使用的绘图单元图案;dstRect:用于指定图案中用于画刷中的矩形区域

15、。这个区域是从image中裁剪的。注意,它的大小不能超过基本图案的范围,否则,填充不会成功,也会报错。wrapMode:指定在画刷中如何排列基本图案。imageAtributes:用于指定基本图案的附加特征参数。先看下示例:基本图案:代码:RectF rect1(10,10,200,200);RectF rect2(210,10,200,200);RectF rect3(410,10,200,200);Image image(Limg.jpg);TextureBrush tBrush1(&image);graphics.FillRectangle(&tBrush1,rect1); /完整图案填充TextureBrush tBrush2(

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > IT计算机/网络 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号