设备描述表及绘图
2015-07-28 12:39
211 查看
在windows平台下,所以的图形操作都是利用DC来完成的;
在相应WM_PAINT消息的代码中,要得到窗口的图形数据,必须调用BeginPaint函数。
是一个隐含的指针,它指向对象本身的,代表了对象的地址。
设备描述表是一个定义一组图形对象及其属性、影响输出的图形方式(数据)结构。windows提供设备描述表,用于应用程序和物理设备之间进行交互,从而提供了应用程序设计的平台无关性。设备描述表又称为设备上下文,或者设备环境。
设备描述表是一种数据结构,它包括了一个设备(如显示器和打印机)的绘制属性相关的信息。所有的绘制操作通过设备描述表进行。设备描述表与大多WIN32结构不同,应用程序不能直接访问设备描述表,只能由各种相关API函数通过设备描述表的句柄间接访问该结构。
设备描述表总是与某种系统硬件设备相关。比如屏幕设备描述表与显示设备相关,打印机设备描述表与打印设备相关等等。
屏幕设备描述表,一般我们简单地称其为设备描述表。它与显示设备具有一定的对应关系,在windows GDI界面下,它总是相关与某个窗口或这窗口上的某个显示区域。通常意义上窗口的设备描述表,一般指的是窗口的客户区,不包括标题栏、菜单栏所占有的区域,而对于整个窗口来说,其设备描述表严格意义上来讲应该称为窗口设备描述表,它包含窗口的全部显示区域。二者的操作方法完全一致,所不同的仅仅是可操作的范围不同而已。
windows 窗口一旦创建,它就自动地产生了与之相对应的设备描述表数据结构,用户可运用该结构,实现对窗口显示区域的GDI操作,如划线、写文本、绘制位图、填充等,并且所有这些操作均要通过设备描述表句柄了进行。
1、 HDC hdc;
hdc=::GetDC(m_hWnd);
::ReleaseDC(m_hWnd,hdc);
2、 CDC *pDC=GetDC();
ReleaseDC(pDC);//需要释放设备描述表
3、CClientDC dc(this); //已经将ReleaseDC封装在里面了,不需要再调用ReleaseDC.
4、CWindowDC dc(this);
CPen
CPen( int nPenStyle, int nWidth, COLORREF crColor );
在程序中,构造一个GDI对象后,该对象并不会立即生效,必须选入设备描述表中,它才会在以后的绘制操作中生效。
CPen* SelectObject( CPen* pPen );
//该函数返回一个先前被选对象的指针。
不能在OnCtlColor里面设置字体,会造成闪烁现象。字体设置放在初始化中即可
使用位图画刷
CBrush( COLORREF crColor );//创建一个颜色画刷
throw( CResourceException );
CBrush( int nIndex, COLORREF crColor );
throw( CResourceException );
CBrush( CBitmap* pBitmap );//创建一个位图画刷
throw( CResourceException );
创建位图对象时,要调用初始化函数LoadBitmap
透明画刷
HGDIOBJ GetStockObject(int
fnObject// stock object type
);
利用GetStockObject函数获取一个黑色或白色的画刷句柄
NULL_BRUSH.
static CDC* PASCAL FromHandle( HDC hDC );//从画刷句柄转换为画刷对象.
CBrush *brush=CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));
创建一个指定的画刷:
创建画刷即创建了GDI资源,需要释放GDI资源,否则会造成内存泄漏。
DeleteObject(m_hTextBrush);
在相应WM_PAINT消息的代码中,要得到窗口的图形数据,必须调用BeginPaint函数。
BeginPaint函数也只能在WM_PAINT消息中使用。在其他地方,只有使用GetDC来得到DC的句柄。调用ReleaseDC函数来释放DC所占用的资源,否则会引起内存泄漏。
this指针:是一个隐含的指针,它指向对象本身的,代表了对象的地址。
设备描述表:
设备描述表是一个定义一组图形对象及其属性、影响输出的图形方式(数据)结构。windows提供设备描述表,用于应用程序和物理设备之间进行交互,从而提供了应用程序设计的平台无关性。设备描述表又称为设备上下文,或者设备环境。设备描述表是一种数据结构,它包括了一个设备(如显示器和打印机)的绘制属性相关的信息。所有的绘制操作通过设备描述表进行。设备描述表与大多WIN32结构不同,应用程序不能直接访问设备描述表,只能由各种相关API函数通过设备描述表的句柄间接访问该结构。
设备描述表总是与某种系统硬件设备相关。比如屏幕设备描述表与显示设备相关,打印机设备描述表与打印设备相关等等。
屏幕设备描述表,一般我们简单地称其为设备描述表。它与显示设备具有一定的对应关系,在windows GDI界面下,它总是相关与某个窗口或这窗口上的某个显示区域。通常意义上窗口的设备描述表,一般指的是窗口的客户区,不包括标题栏、菜单栏所占有的区域,而对于整个窗口来说,其设备描述表严格意义上来讲应该称为窗口设备描述表,它包含窗口的全部显示区域。二者的操作方法完全一致,所不同的仅仅是可操作的范围不同而已。
windows 窗口一旦创建,它就自动地产生了与之相对应的设备描述表数据结构,用户可运用该结构,实现对窗口显示区域的GDI操作,如划线、写文本、绘制位图、填充等,并且所有这些操作均要通过设备描述表句柄了进行。
1、 HDC hdc;
hdc=::GetDC(m_hWnd);
::ReleaseDC(m_hWnd,hdc);
2、 CDC *pDC=GetDC();
ReleaseDC(pDC);//需要释放设备描述表
3、CClientDC dc(this); //已经将ReleaseDC封装在里面了,不需要再调用ReleaseDC.
4、CWindowDC dc(this);
CPen
CPen( int nPenStyle, int nWidth, COLORREF crColor );
在程序中,构造一个GDI对象后,该对象并不会立即生效,必须选入设备描述表中,它才会在以后的绘制操作中生效。
CPen* SelectObject( CPen* pPen );
//该函数返回一个先前被选对象的指针。
不能在OnCtlColor里面设置字体,会造成闪烁现象。字体设置放在初始化中即可
使用位图画刷
CBrush::CBrush
CBrush( );CBrush( COLORREF crColor );//创建一个颜色画刷
throw( CResourceException );
CBrush( int nIndex, COLORREF crColor );
throw( CResourceException );
CBrush( CBitmap* pBitmap );//创建一个位图画刷
throw( CResourceException );
创建位图对象时,要调用初始化函数LoadBitmap
透明画刷
HGDIOBJ GetStockObject(int
fnObject// stock object type
);
利用GetStockObject函数获取一个黑色或白色的画刷句柄
NULL_BRUSH.
static CDC* PASCAL FromHandle( HDC hDC );//从画刷句柄转换为画刷对象.
CBrush *brush=CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));
创建一个指定的画刷:
CBrush::CreateSolidBrush
BOOL CreateSolidBrush( COLORREF crColor );创建画刷即创建了GDI资源,需要释放GDI资源,否则会造成内存泄漏。
DeleteObject(m_hTextBrush);
相关文章推荐
- 算法设计技巧
- BZOJ 2818: Gcd( 欧拉函数 )
- 配置Exchange 2013恶意软件筛选器
- 加速Android Studio/Gradle构建
- hadoop实现kmeans二
- JSPatch 实现原理详解
- asp.net mvc下标记一个action同时可以接受httpget和httppost
- 消息映射机制
- 对程序员非常重要的24个软技能
- iOS开发系列–音频播放、录音、视频播放、拍照、视频录制
- Java对象的相等性判断:equasl( )方法 与 ==操作符
- 。。
- 多线程互斥锁Pthread_mutex_t
- HDU 1003 Max Sum
- [leetcode-26]Remove Duplicates from Sorted Array(C)
- Docker支持集群分布式应用意义很重大
- 在编译过程中出现未定义符号处理方法
- python3入门之字符串
- 载入动画
- Java时间差及时间比较