文档介绍:应用CDC实例
1
3
2
图形对象
CDC类
内容提要
第10章图形设备接口
1
在Windows中向屏幕或打印机上绘图时,需要调用GDI(图形设备接口)函数,GDI与设备驱动程序实现了设备无关的图形操作。
设备描述符表DC(Device Contex)是Windows的一个数据结构,用来确定GDI输出的位置和形象的属性集合,如背景、调色板、字体、刷子等。
在Visual C++ ,MFC将设备描述符(DC)和图形设备接口(GDI)都封装在CDC类中。
CDC类
2
CDC类
CDC类既包含了有关设备的属性,同时又包含了绘图方法
lientDC类和CWindowDC类支持绘图操作。
CClientDC类支持在客户区绘图
lientDC类与 CWndowDC类支持实时响应
CPaintDC类用于重画。lientDC和CWindowDC类绘图时,显示器会将立即显示,而用CPaintDC类绘图时,要到下次重画时才显示。
3
CDC类的绘图函数
SetPixel() :用于在指定坐标处按指定色彩画一点,函数的原型有两种形式:
(1)COLORREF SetPixel( int x, int y, COLORREF crColor );
(2)COLORREF SetPixel( POINT point, COLORREF crColor );
函数的返回值为所画点原来的颜色,其中,crColor为所画点的新颜色,(1)中的参数x和y表示点的坐标;(2)中的位置坐标用POINT结构变量来表示x和y的点的坐标。
4
MoveTo() :画线时的当前位置可以通过MoveTo()设定,函数的原型有两种形式。
CPoint MoveTo( int x, int y );
CPoint MoveTo( POINT point );
函数返回值为MoveTo()函数执行前的当前位置
CDC类的绘图函数
5
o() :函数的功能是从当前坐标位置向指定坐标点画一条直线,且后一个坐标点在画线完成后自动变成当前绘图位置。函数原型为以下两种形式:
BOOL o( int x, int y );
BOOL o( POINT point );
如果直线已画好,函数返回TRUE,否则返回FALSE。
CDC类的绘图函数
6
Rectangle() :函数的功能是使用当前选定的画笔绘制一个矩形,并使用当前选定的画刷填充矩形,函数原型为:
BOOL Rectangle( int x1, int y1, int x2, int y2 );
BOOL Rectangle( LPCRECT lpRect );
对其中的参数说明如下:
( x1, y1 ):矩形左上角的坐标。
( x2, y2 ):矩形右下角的坐标。
lpRect:指向矩形的指针。
CDC类的绘图函数
7
Ellipse() :函数的功能是使用当前选定的画笔绘制一个椭圆,并使用当前选定的画刷填充椭圆,函数原型为:
BOOL Ellipse( int x1, int y1, int x2, int y2 );
BOOL Ellipse( LPCRECT lpRect );
对其中的参数说明如下:
( x1, y1 ):包围椭圆的矩形区域左上角的坐标。
( x2, y2 ):包围椭圆的矩形区域右下角的坐标。
lpRect:用于定义包围椭圆的矩形区域。
CDC类的绘图函数
8
Polygon() :函数的功能是生成一个封闭的多边形,函数原型为:
BOOL Polygon( LPPOINT lpPoints, int nCount );
对其中的参数说明如下:
lpPoints:是一个由多边形的顶点组成的数组。
nCount:多边形的顶点个数。
CDC类的绘图函数
9
CPaintDC类
CPaintDC类
CPaintDC类主要用于消息处理函数OnPaint()。OnPaint()是ON_PAINT消息的消息响应函数。WM_PAINT消息在窗口被刷新、重画、改变大小时产生。窗口移动,大小改变时CPaintDC将自动地重画窗口内容。此处自动的含义是指将发出WM_PAINT,执行OnPaint()函数。
例: P363
10