C++/GDI+ 学习笔记(二)——几个例子

原创 2007年10月09日 09:25:00

 1.     第一个例子——“Hello World!”

第一个最经典的例子当然是Hello World了:)
 
Graphics mygraphics(*pDC);               //创建一个Graphics对象
 
//创建一个笔刷第一项是透明度(0--255后三项是RGB
SolidBrush brush( Color(100,0,0,255) );   
 
FontFamily fontFamily(L"Latha");         //选择一种字体
 
Font font( &fontFamily, 1, FontStyleRegular,UnitInch );
     
PointF pointF(5,5);
mygraphics.DrawString( L"Hello Word!", -1, &font, pointF, &brush );
 
上面的例子就会显示出一行大大的“Hello World!”。
 

需要注意的是,Font的构造函数,里面的第二个参数是表示字体大小的。与过去不同,这里的单位不再是像素,而是一相对的长度单位em。常用于CSS里对距离,长度,字号等的定义。
它是参照于预先设置的一个值的。根据具体的使用环境不同,其标准值也不一样。
而且,这个参数是支持实数的,也就是说不必是整数。
 
 
2.     第二个例子——载入一副图片
 
Graphics imgraphics( *pDC );
//文件路径,需要注意的是GDI+的字符串参数都是宽字符的
Image image(L"001.jpg");  
imgraphics.DrawImage(&image,0,0);
 
很简单的就可以载入并显示出来一个jpg图片了。需要注意的是,GDI+的所有字符串参数,都是要宽字符的。
 

可以发现GraphicsGDI+中,的作用,有些象GDI种的CDC,不过不同的是,Graphics是设备无关的,所以我们不必在费神的考虑设备无关位图和设备相关位图的差别了。
同时,GDI+本身就支持非常多的图片格式,所以载入图片并显示的过程被大大简化了。需要注意的是,某些常用格式的图片本身还有很多差异,例如bmp图片就又被细分为16位,24位,32位,根据其保存的算法不同还分作压缩和非压缩的。根据掩码不同,16位又分成了多种格式。这些格式里就有很多是GDI+不支持的。
 
 
 
 
3.     第三个例子——绘制直线
 
Graphics Pathraphics( *pDC );
//创建一个矢量图形对象
GraphicsPath path;
          
Pen newPen( Color( 255, 0, 0 ), 3 );
//Path 增加一条直线, 可以增加多条。
path.AddLine( 0,0,100,100 );
 
Pathraphics.DrawPath( &newPen, &path );
 
 

GDI+Pen类还提供SetDashStyleSetDashPattern方法来设置画笔的预定义风格和自定义类型。其中,预定义风格可以有:DashStyleSolid(实线)DashStyleDash(虚线)DashStyleDot(点线) DashStyleDashDot(点划线)DashStyleDashDotDot(双点划线)DashStyleCustom(自定义类型)
 
 
Graphics Pathraphics( *pDC );
//创建一个矢量图形对象
GraphicsPath path;
          
Pen newPen( Color( 255, 0, 0 ), 3 );
newPen.SetDashStyle(DashStyleCustom); //自定义风格
 
REAL dashVals[4] = {
                 2, // 短划长为2
                 2 ,// 间隔为2
                 7, // 短划长为7
                 2 }; // 间隔为2
          
newPen.SetDashPattern(dashVals, 4);
 
//当连续增加时,效果是将所特有被增加的点连接起来。
path.AddLine( 0,0,100,100 );
path.AddLine( 200,100,200,50 );
 
Pathraphics.DrawPath( &newPen, &path );
 
 

经过少许的变化,这次画出了一条稍微复杂一点的线。利用一个简单的浮点数组来定义点线的周期,就可以画出不同的点划线了。
通过newPen.SetStartCap( LineCapArrowAnchor );
       newPen.SetEndCap( LineCapDiamondAnchor );
还能够设置线的端点的样式,例如箭头,圆等等
 

windbg调试学习笔记(二)

3 进程与线程 既可以显示进程和线程列表,又可以显示指定进程或线程的详细信息。调试命令可以提供比taskmgr更详尽的进程资料,在调试过程中不可或缺。 3.1 进程命令 进程命令包括这些内容:显示进程...
  • wojiuguowei
  • wojiuguowei
  • 2017-12-28 19:44:50
  • 125

upnp 学习笔记二

 现在从客户端入手 刚搭的环境eclipse4.2+adt20 新建工程UpnpBrowser-110712 下载客户端源码 http://4thline.org...
  • killcwd
  • killcwd
  • 2014-07-08 16:32:06
  • 1111

C++/GDI+ 学习笔记(三)——基础

GDI+ 的主要画刷 SolidBrush 单色画刷 ...
  • eplanet
  • eplanet
  • 2007-10-10 10:25:00
  • 6235

C++/GDI+ 学习笔记(一)——安装、配置&使用

使用GDI+很简单。需要做的有一下几个步骤。1.       安装GDI+ SDK开发包。网上很多地方都有下载。解压到一个地方即可。2.       设置编译器的包含路径,VC6的设置方法是 Tool...
  • eplanet
  • eplanet
  • 2007-10-09 09:11:00
  • 9225

C++英文翻译。

你工作在一个新的代码将不会编译,你需要运行的程序。编译器不会让你运行如果有编译错误。注释掉的进展代码允许程序编译,所以你可以运行它。 2)你想改变的方式,通过评论了个别代码行的执行你的计划。例如...
  • u013820713
  • u013820713
  • 2014-03-07 19:32:52
  • 790

OSGI学习笔记一(事件传递)

一、定义在jujianzh传递事件的类
  • waterbbx
  • waterbbx
  • 2014-11-07 18:35:08
  • 9614

c++学习笔记精华版

  • 2017年08月27日 13:29
  • 55KB
  • 下载

GDI+教程(C++中文版)

GDI+教程(C++中文版)
  • u012541187
  • u012541187
  • 2016-11-28 14:06:21
  • 945

WinDbg分析DUMP文件

WinDbg分析DUMP文件 1. 如何生成dump文件?     原理:通过SetUnhandledExceptionFilter设置捕获dump的入口,然后通过MiniDump...
  • thanklife
  • thanklife
  • 2017-05-24 11:22:56
  • 660

VC下如何使用GDI+进行图像程序设计

原作者:孙涛 整理 http://blog.csdn.net/suntaoznz   GDI+介绍 Microsoft® Windows® GDI+ 是Windows XP 或...
  • netanimals
  • netanimals
  • 2013-05-14 17:50:10
  • 4396
收藏助手
不良信息举报
您举报文章:C++/GDI+ 学习笔记(二)——几个例子
举报原因:
原因补充:

(最多只允许输入30个字)