1 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

GDI+ Graphics类相关推荐

  1. Win32中GDI+应用(三)---Graphics类

    在我理解看来,Graphics是一个device context和你的drawing conetent之间的一个中介.它存储了device context的相关属性,以及drawing content ...

  2. GDI+——使用Graphics类绘制基本图形

    目录 绘制基本图形 绘制直线 绘制矩形 绘制椭圆 绘制圆弧 绘制扇形 绘制多边形 绘制文本 综合案例 绘制波形曲线 使用双缓冲技术绘图 绘制基本图形 绘制直线 绘制直线用到了Graphics类的Dra ...

  3. 【转】c#数字图像处理(一)Bitmap类、 Bitmapdata类和 Graphics类

    转自:https://www.cnblogs.com/dearzhoubi/p/8553763.html Bitmap类. Bitmapdata类和 Graphics类是C#图像处理中最重要的3个类, ...

  4. java绘图之Graphics类

    1.画图实现原理 Component类中提供了三个与绘图有关的三个方法. paint(Graphics g):绘制组件的外观. update(Graphics g):调用paint方法,刷新组件外观 ...

  5. java graphics 类_对于 Graphics 类的一点认识(转)

    AWT 提供了一些用户接口的构件,但是它不提供一些类似的纯粹的绘制图形的对象,例如 Rectangle.Polygon 和 Point 类没有任何绘制图形的能力.换句话说它们不具备 draw 方法,仅 ...

  6. Java Graphics类的绘图方法

    Graphics类提供基本绘图方法,Graphics2D类提供更强大的绘图能力.本节讲解Graphics类,下节讲解Graphics2D. Graphics类提供基本的几何图形绘制方法,主要有:画线段 ...

  7. C# Graphics类的用法

    1. Graphics.TranslateTransform Graphics.TranslateTransform是一个用来移动绘图坐标系的方法,可以将绘图坐标系沿着指定的X和Y轴方向平移一定的距离 ...

  8. java graphics 类_Java的Graphics类应该怎么用?

    展开全部 Graphics类提供基本绘图方法,Graphics2D类提供更强大32313133353236313431303231363533e59b9ee7ad9431333337613162的绘图 ...

  9. Graphics类绘制图形

    1. 画直线 void drawLine(int startX,int startY,int endX,int endY); 四个参数分别为:起始点的x坐标和y坐标以及终点的x坐标和y坐标,该方法用于 ...

最新文章

  1. mysql数据库存储数据的过程_[数据库]MySql存储过程总结
  2. php 写 mysql 事件_PHP日歷,包含來自MySQL數據庫的重復事件
  3. 上周热点回顾(10.25-10.31)
  4. 那些年我用过的SAP IDE 1
  5. php 标点符号,php 过滤英文标点符号及过滤中文标点符号代码
  6. js处理16进制hex转str出现的中文乱码问题
  7. 稀疏表示字典的显示【MATLAB实现】
  8. img2txt(二)
  9. 揭露微信朋友圈当中出现刷票群0.01一票微信号、刷票0.01一票微信号的虚假面目
  10. JavaScript编辑器推荐
  11. QTreeView设置branch图标大小
  12. Obsidian流程图
  13. reference to ‘ max‘ is ambiguous
  14. 联想E430使用移动硬盘做系统启动
  15. 自然语言处理(NLP)技术在医疗保健领域中的八个案例
  16. MATLAB矩阵范数最小值
  17. Echarts关于仪表盘
  18. 短连接和长连接的区分
  19. 每周分享第 35 期
  20. 数据结构之[关键路径]以及[拓扑算法优化]

热门文章

  1. 配置oracle odbc驱动,oracle odbc driver configuration
  2. 在JS中使用Ajax
  3. mac mysql root不能登陆_Mac下新安装的MySQL无法登陆root用户解决方法
  4. linux minimal版没有ip信息,如何配置linux网络信息,访问外网
  5. python 3教程_Python 3 教程
  6. 财务报表五力、五性分析雷达图
  7. Ubuntu Linux下通过TPM1.2芯片保护SSH私钥的安全
  8. 25个优秀的UI设计资源下载
  9. PHP-redis中文文档 1
  10. Unity推出2D工具:不再只是3D引擎