GDI+ Graphics类
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类相关推荐
- Win32中GDI+应用(三)---Graphics类
在我理解看来,Graphics是一个device context和你的drawing conetent之间的一个中介.它存储了device context的相关属性,以及drawing content ...
- GDI+——使用Graphics类绘制基本图形
目录 绘制基本图形 绘制直线 绘制矩形 绘制椭圆 绘制圆弧 绘制扇形 绘制多边形 绘制文本 综合案例 绘制波形曲线 使用双缓冲技术绘图 绘制基本图形 绘制直线 绘制直线用到了Graphics类的Dra ...
- 【转】c#数字图像处理(一)Bitmap类、 Bitmapdata类和 Graphics类
转自:https://www.cnblogs.com/dearzhoubi/p/8553763.html Bitmap类. Bitmapdata类和 Graphics类是C#图像处理中最重要的3个类, ...
- java绘图之Graphics类
1.画图实现原理 Component类中提供了三个与绘图有关的三个方法. paint(Graphics g):绘制组件的外观. update(Graphics g):调用paint方法,刷新组件外观 ...
- java graphics 类_对于 Graphics 类的一点认识(转)
AWT 提供了一些用户接口的构件,但是它不提供一些类似的纯粹的绘制图形的对象,例如 Rectangle.Polygon 和 Point 类没有任何绘制图形的能力.换句话说它们不具备 draw 方法,仅 ...
- Java Graphics类的绘图方法
Graphics类提供基本绘图方法,Graphics2D类提供更强大的绘图能力.本节讲解Graphics类,下节讲解Graphics2D. Graphics类提供基本的几何图形绘制方法,主要有:画线段 ...
- C# Graphics类的用法
1. Graphics.TranslateTransform Graphics.TranslateTransform是一个用来移动绘图坐标系的方法,可以将绘图坐标系沿着指定的X和Y轴方向平移一定的距离 ...
- java graphics 类_Java的Graphics类应该怎么用?
展开全部 Graphics类提供基本绘图方法,Graphics2D类提供更强大32313133353236313431303231363533e59b9ee7ad9431333337613162的绘图 ...
- Graphics类绘制图形
1. 画直线 void drawLine(int startX,int startY,int endX,int endY); 四个参数分别为:起始点的x坐标和y坐标以及终点的x坐标和y坐标,该方法用于 ...
最新文章
- mysql数据库存储数据的过程_[数据库]MySql存储过程总结
- php 写 mysql 事件_PHP日歷,包含來自MySQL數據庫的重復事件
- 上周热点回顾(10.25-10.31)
- 那些年我用过的SAP IDE 1
- php 标点符号,php 过滤英文标点符号及过滤中文标点符号代码
- js处理16进制hex转str出现的中文乱码问题
- 稀疏表示字典的显示【MATLAB实现】
- img2txt(二)
- 揭露微信朋友圈当中出现刷票群0.01一票微信号、刷票0.01一票微信号的虚假面目
- JavaScript编辑器推荐
- QTreeView设置branch图标大小
- Obsidian流程图
- reference to ‘ max‘ is ambiguous
- 联想E430使用移动硬盘做系统启动
- 自然语言处理(NLP)技术在医疗保健领域中的八个案例
- MATLAB矩阵范数最小值
- Echarts关于仪表盘
- 短连接和长连接的区分
- 每周分享第 35 期
- 数据结构之[关键路径]以及[拓扑算法优化]
热门文章
- 配置oracle odbc驱动,oracle odbc driver configuration
- 在JS中使用Ajax
- mac mysql root不能登陆_Mac下新安装的MySQL无法登陆root用户解决方法
- linux minimal版没有ip信息,如何配置linux网络信息,访问外网
- python 3教程_Python 3 教程
- 财务报表五力、五性分析雷达图
- Ubuntu Linux下通过TPM1.2芯片保护SSH私钥的安全
- 25个优秀的UI设计资源下载
- PHP-redis中文文档 1
- Unity推出2D工具:不再只是3D引擎