C++/GDI+ 学习笔记(二)——几个例子
2007-10-09 09:25
543 查看
1. 第一个例子——“Hello World!”
第一个最经典的例子当然是Hello World了:)
上面的例子就会显示出一行大大的“Hello World!”。
2. 第二个例子——载入一副图片
很简单的就可以载入并显示出来一个jpg图片了。需要注意的是,GDI+的所有字符串参数,都是要宽字符的。
3. 第三个例子——绘制直线
第一个最经典的例子当然是Hello World了:)
[align=left]Graphics mygraphics(*pDC); //创建一个Graphics对象[/align] [align=left] [/align] [align=left]//创建一个笔刷第一项是透明度(0--255)后三项是RGB值[/align] [align=left]SolidBrush brush( Color(100,0,0,255) ); [/align] [align=left] [/align] [align=left]FontFamily fontFamily(L"Latha"); //选择一种字体[/align] [align=left] [/align] [align=left]Font font( &fontFamily, 1, FontStyleRegular,UnitInch );[/align] [align=left] [/align] [align=left]PointF pointF(5,5);[/align] [align=left]mygraphics.DrawString( L"Hello Word!", -1, &font, pointF, &brush );[/align] |
需要注意的是,Font的构造函数,里面的第二个参数是表示字体大小的。与过去不同,这里的单位不再是像素,而是一相对的长度单位em。常用于CSS里对距离,长度,字号等的定义。 它是参照于预先设置的一个值的。根据具体的使用环境不同,其标准值也不一样。 而且,这个参数是支持实数的,也就是说不必是整数。 |
[align=left]Graphics imgraphics( *pDC ); [/align] [align=left]//文件路径,需要注意的是GDI+的字符串参数都是宽字符的[/align] [align=left]Image image(L"001.jpg"); [/align] [align=left]imgraphics.DrawImage(&image,0,0);[/align] |
可以发现Graphics在GDI+中,的作用,有些象GDI种的CDC,不过不同的是,Graphics是设备无关的,所以我们不必在费神的考虑设备无关位图和设备相关位图的差别了。 同时,GDI+本身就支持非常多的图片格式,所以载入图片并显示的过程被大大简化了。需要注意的是,某些常用格式的图片本身还有很多差异,例如bmp图片就又被细分为16位,24位,32位,根据其保存的算法不同还分作压缩和非压缩的。根据掩码不同,16位又分成了多种格式。这些格式里就有很多是GDI+不支持的。 |
[align=left]Graphics Pathraphics( *pDC );[/align] [align=left]//创建一个矢量图形对象[/align] [align=left]GraphicsPath path;[/align] [align=left] [/align] [align=left]Pen newPen( Color( 255, 0, 0 ), 3 );[/align] [align=left]//为Path 增加一条直线, 可以增加多条。[/align] [align=left]path.AddLine( 0,0,100,100 );[/align] [align=left] [/align] [align=left]Pathraphics.DrawPath( &newPen, &path );[/align] |
GDI+的Pen类还提供SetDashStyle和SetDashPattern方法来设置画笔的预定义风格和自定义类型。其中,预定义风格可以有:DashStyleSolid(实线)、DashStyleDash(虚线)、DashStyleDot(点线)、 DashStyleDashDot(点划线)、DashStyleDashDotDot(双点划线)和DashStyleCustom(自定义类型)。 |
[align=left]Graphics Pathraphics( *pDC );[/align] [align=left]//创建一个矢量图形对象[/align] [align=left]GraphicsPath path;[/align] [align=left] [/align] [align=left]Pen newPen( Color( 255, 0, 0 ), 3 );[/align] [align=left]newPen.SetDashStyle(DashStyleCustom); //自定义风格[/align] [align=left] [/align] [align=left]REAL dashVals[4] = {[/align] [align=left] 2, // 短划长为2[/align] [align=left] 2 ,// 间隔为2[/align] [align=left] 7, // 短划长为7[/align] [align=left] 2 }; // 间隔为2[/align] [align=left] [/align] [align=left]newPen.SetDashPattern(dashVals, 4);[/align] [align=left] [/align] [align=left]//当连续增加时,效果是将所特有被增加的点连接起来。[/align] [align=left]path.AddLine( 0,0,100,100 );[/align] [align=left]path.AddLine( 200,100,200,50 );[/align] [align=left] [/align] [align=left]Pathraphics.DrawPath( &newPen, &path );[/align] |
经过少许的变化,这次画出了一条稍微复杂一点的线。利用一个简单的浮点数组来定义点线的周期,就可以画出不同的点划线了。 通过newPen.SetStartCap( LineCapArrowAnchor ); newPen.SetEndCap( LineCapDiamondAnchor ); 还能够设置线的端点的样式,例如箭头,圆等等 |
相关文章推荐
- C++/GDI+ 学习笔记(二)——几个例子
- C++/GDI+ 学习笔记(二)——几个例子
- C++/GDI+ 学习笔记(一)——安装、配置&使用
- C++/GDI+ 学习笔记(四)——实用技巧——调色板(ColorPalette)
- C++/GDI+ 学习笔记(一)——安装、配置&使用
- 【C/C++学习笔记】判断一个点是否在多边形内部的例子
- C++学习笔记:不用sizeof判断int类型占用几个字节
- 【C/C++学习笔记】改造 printf 的小例子
- C++/GDI+ 学习笔记(三)——基础
- C++/GDI+ 学习笔记(五)——应用实例——半透明的阴影效果
- C++/GDI+ 学习笔记(三)——基础
- 【C++学习笔记】 C++与JAVA的异同,一个有趣的例子
- C++/GDI+ 学习笔记(四)——实用技巧——颜色矩阵(ColorMatrix)
- C++/GDI+ 学习笔记(五)——应用实例——半透明的阴影效果
- C++/GDI+ 学习笔记(四)——实用技巧——双缓冲(Double Buffer)
- VBA学习笔记(5)-几个有用的例子
- C++/GDI+ 学习笔记(一)——安装、配置&使用
- C++/GDI+ 学习笔记(五)——应用实例——半透明的阴影效果
- C++/GDI+ 学习笔记(四)——实用技巧——双缓冲(Double Buffer)
- C++/GDI+ 学习笔记(四)——实用技巧——调色板(ColorPalette)