Welcome to ErranLi's Blog!

  C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  106 Posts :: 1 Stories :: 97 Comments :: 0 Trackbacks

常用链接

留言簿(12)

搜索

  •  

积分与排名

  • 积分 - 163946
  • 排名 - 150

最新评论

阅读排行榜

 GDI+的核心:Graphics类


(1)The Graphics class provides methods for drawing lines, curves, figures, images, and text. A Graphics object stores attributes of the display device and attributes of the items to be drawn.【msdn】

        Graphics是一个device context和你的drawing conetent之间的一个中介。它存储了device context的相关属性,以及drawing content的属性。这样,它就能用自己的方法把drawing content“映射”到device content 之上。

(2)GDI+的核心是Graphics类,包含了显示、绘图等功能。它提供了四个构造函数:
   Graphics::Graphics(Image*)
   Graphics::Graphics(HDC)
   Graphics::Graphics(HDC,HANDLE)
   Graphics::Graphics(HWND,BOOL)

   构造函数1从image对象创建一个Graphics类。这种方式允许你在打开某张,或者生成某张位图之后,应用Grapgics的方法对改位图进行操作。

   构造函数2从一个传统的HDC获取一个Graphics对象,把传统的在HDC完成的操作接手过来。也就是当要画直线,曲线,图形等时,采用这种构造函数。

   后面两种构造函数这里不说了!

(3)如果读者有GDI编程经验的话,应该会联想起CDC::CreateCompatibleDC和CBitmap::
CreateCompatibleBitmap吧?再列举Graphics中有代表性的用于绘图的成员函数:
   Graphics::DrawArc(Pen*,INT,INT,INT,INT,REAL,REAL)
   Graphics::DrawBeziers(Pen*,Point*,INT)
   Graphics::DrawClosedCurve(Pen*,Point*,INT)
   Graphics::DrawCurve(Pen*,Point*,INT)
   Graphics::DrawEllipse(Pen*,Rect&)
   Graphics::DrawImage(Image*,RectF&)
   Graphics::DrawLine(Pen*,Point&,Point&)
   Graphics::DrawPie(Pen*,Rect&,REAL,REAL)
   Graphics::DrawPolygon(Pen*,Point*,INT*)
   Graphics::DrawRectangle(Pen*,Rect&)
   是不是非常象CDC?从这里大家也能猜出一点Graphics类和CDC类的异同吧!简单的说,Graphics的层次更高一些,封装的更好。


2  GDI+的几个特点:

   (1)传统的GDI编程最痛苦的是什么?是不停的CreateObject,SeleteObject,DeleteObject——代码繁琐,一不小心还会内存泄露……现在GDI+结束了这一切,就凭这一个理由,也足够我们转向GDI+了,呵呵。从上面的几个成员函数可以看出来,每个绘图动作都指定了画笔、刷子或者Image,完全抛弃了SelectObject的概念。

   (2)GDI+里面的颜色更加丰富,全面支持32位色,从Color类的构造函数就可以看出来:

           Color::Color(BYTE a, BYTE r, BYTE g, BYTE b);其中a就是透明度。

   (3)GDI+里的所有函数都只接受Unicode字符串,编写代码的时候需要注意这一点。


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/keyouan2008/archive/2010/08/13/5809519.aspx

posted on 2010-10-09 17:02 erran 阅读(998) 评论(0)  编辑 收藏 引用 所属分类: dotNet

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理