高级GDI图形编程(1)
2007-05-19 22:13
232 查看
1.图形设备描述表
一个图形描述表实际上就是对一种安装在系统中的视频图象卡的描述。同时要记住的是同时还是当前绘制工具的描述。
2色彩、画笔和画刷
a.能够在计算机屏幕上绘制的对象的类型并没有多少。只有点、线和矩形。其他的任何东西都是这些基本图元对象类型的组合。
b.GDI一般一次只使用一个画笔和画刷。在你的系统配置中可以有许多画笔和画刷,但是在当前图形设备描述表中每次只有一个画笔或画刷被激活。这样就必须为图形设备描述表选择对象,以便于使用。
3使用画笔
a.画笔句柄称之为HPEN. HPEN pen_1 = NULL
b.创建画笔的两种方法
(1)HPEN white_pen = NULL;
White_pen = GetStockObject(WHITE_PEN);
(2)自定义方法:HPEN CreatePen(int fnPenStyle,
int nWidth,
COLORREF crColor)
例如:HPEN red_pen = CreatePen(PS_SOLID,1,RGB(255,0,0));
4在图形设备描述表中选择画笔
HGDIOBJ SelectObject(HDC hdc,
HGDIOBJ hgdiobj)
需要注意的是,该函数可以在调用时保存上一个对象句柄并一直存储着新句柄。
例如:HDC hdc;
HPEN blue_pen = CreatePen(PS_SOLID,1,RGB(0,0,255));
HPEN old_pen = NULL;
old_pen = SelectObject(hdc,blue_pen);
根据上面的代码,应该很清楚怎样恢复原来的画笔句柄。
5.DeleteObject()函数的使用
(1)当已经使用GetStoctObject()或CreatePen()创建的画笔进行工作之后,必须保存它们。该项工作就由DeleteObject()函数来完成,该函数与SelectObject()函数相类似,也是一个多种组合形式的函数,可以删除多种不同的句柄类型
函数原型BOOL DeleteObject(HGDIOBJ hobject);
(2)注意,当删除一个当前选定的对象,或者选定一个已经删除的对象,将导致发生错误,并且可能是一个GP默认值
(3)可以在程序结束时进行DeleteObject()工作,但是如果创建时使用对象较多,则应该在不使用时随时删除它们,因为资源有限。
(4)不要尝试删除已经删除过的对象,这样会导致无法预料的结果
一个图形描述表实际上就是对一种安装在系统中的视频图象卡的描述。同时要记住的是同时还是当前绘制工具的描述。
2色彩、画笔和画刷
a.能够在计算机屏幕上绘制的对象的类型并没有多少。只有点、线和矩形。其他的任何东西都是这些基本图元对象类型的组合。
b.GDI一般一次只使用一个画笔和画刷。在你的系统配置中可以有许多画笔和画刷,但是在当前图形设备描述表中每次只有一个画笔或画刷被激活。这样就必须为图形设备描述表选择对象,以便于使用。
3使用画笔
a.画笔句柄称之为HPEN. HPEN pen_1 = NULL
b.创建画笔的两种方法
(1)HPEN white_pen = NULL;
White_pen = GetStockObject(WHITE_PEN);
(2)自定义方法:HPEN CreatePen(int fnPenStyle,
int nWidth,
COLORREF crColor)
例如:HPEN red_pen = CreatePen(PS_SOLID,1,RGB(255,0,0));
4在图形设备描述表中选择画笔
HGDIOBJ SelectObject(HDC hdc,
HGDIOBJ hgdiobj)
需要注意的是,该函数可以在调用时保存上一个对象句柄并一直存储着新句柄。
例如:HDC hdc;
HPEN blue_pen = CreatePen(PS_SOLID,1,RGB(0,0,255));
HPEN old_pen = NULL;
old_pen = SelectObject(hdc,blue_pen);
根据上面的代码,应该很清楚怎样恢复原来的画笔句柄。
5.DeleteObject()函数的使用
(1)当已经使用GetStoctObject()或CreatePen()创建的画笔进行工作之后,必须保存它们。该项工作就由DeleteObject()函数来完成,该函数与SelectObject()函数相类似,也是一个多种组合形式的函数,可以删除多种不同的句柄类型
函数原型BOOL DeleteObject(HGDIOBJ hobject);
(2)注意,当删除一个当前选定的对象,或者选定一个已经删除的对象,将导致发生错误,并且可能是一个GP默认值
(3)可以在程序结束时进行DeleteObject()工作,但是如果创建时使用对象较多,则应该在不使用时随时删除它们,因为资源有限。
(4)不要尝试删除已经删除过的对象,这样会导致无法预料的结果
相关文章推荐
- 高级GDI图形编程(3)
- C#学习笔记:GDI图形高级编程(1)——如何将图形画到控件上
- C#学习笔记:GDI图形高级编程(2)——关于Brush类
- 高级GDI图形编程(2)
- Windows编程 GDI简单图形的绘制 简单实现锁帧效果
- 高级图形编程(基于opengl)2
- C# GDI+绘图高级编程(三)
- 高级图形编程(基于opengl)1
- 求助:在vc中gdi编程中如何实现图形放缩和平移?
- 高级图形编程(基于opengl)8
- VS2010/MFC编程入门之五十(图形图像:GDI对象之画笔CPen)
- HTML5高级编程之图形扭曲及其应用三
- HTML5高级编程之图形扭曲及其应用二(运用篇)
- (转载)VS2010/MFC编程入门之五十(图形图像:GDI对象之画笔CPen)
- VS2010/MFC编程入门之五十(图形图像:GDI对象之画笔CPen)
- .NET GDI+图形图像编程教程
- 高级图形编程(基于opengl)3
- 高级图形编程(基于opengl)4
- HTML5高级编程之图形扭曲及其应用一(原理篇)
- [转]超全面的.NET GDI+图形图像编程教程