一个图形设备描述表实际上就是对一种安装在机器上的视频图形卡的描述。
1、画笔
画笔的创建
HPEN hPen = NULL;
(1)使用存储对象,存储对象只是Windows所拥有的一些默认样式的对象。
HGDIOBJ GetStockObject( int fnObject );
如果要使用白色的画笔:
HPEN hPen = NULL ;
hPen = GetStockObject( WHITE_PEN );
(2)创建一个用户定义的画笔
HPEN CreatePen(
int fnPenStyle, //画笔的颜色
int nWidth, //画笔的宽度
COLORREF crColor //颜色
);
线条样式
PS_NULL 画笔不可见
PS_SOLID 画笔为实线
PS_DASH 画笔为虚线
PS_DOT 画笔为点线
PS_DASHDOT 画笔为点画线
PS_DASHDOTDOT 画笔为双点画线
以下创建画笔代码:
HPEN hPen = CreatePen( PS_SOLID, 1, RGB( 255, 0 , 0 ) );
HPEN hOldPen = NULL ;
hOldPen = SelectObject( hDC , hPen ) ;
DeleteObject( hPen );
画刷:
画刷的定义:
HBRUSH hBrush = NULL ;
使用默认的浅灰色画刷:
hBrush = GetStockObject( LTGRAY_BURSH );
在画刷的创建中还可以创建纯色的画刷,其函数原型为:
hBrush = GetStockObject( COLORREF crColor );
下面是创建一个纯色的画刷,并且选入到设备中进行绘图:
HBRUSH hBrush = NULL ;
HBRUSH hOld = NULL ;
hBrush = CreateSolidBrush( RGB( 255 , 0 , 0 ) );
hOld = SelectObject( hBrush );
SelectObject( hOld );
DeleteObject( hBrush );
图形的绘制:
1、点的绘制
COLORREF SetPixel ( HDC hdc , int x , int y , COLORREF crColor ) ;
其中( x , y )是窗口客户区内容任何一点的坐标。
2、线条的绘制
BOOL MoveToEx( HDC hdc , int x , int y , LPPOINT lpPoint ) ;
BOOL LineTo ( HDC hdc , int xEnd , int y End ) ;
MoveToEx()函数是将现在的绘图坐标移动到( x , y )处。
lpPoint 是一个指针,目的是在调用这个函数的时候,系统将绘图坐标移动后,将原来的坐标保存到这个参数中,方便今后修改使用。 通常为NULL ,
LineTo() 是通知系统,从当前的绘图坐标开始,向( xEnd , yEnd)坐标位置处绘制一条线段
例:从(10,20 ) 的位置开始向 (100, 90 )绘制一条直线,色彩为绿色
HWND hWnd ;
HDC hDC = GetDC( hWnd ) ;
//创建画笔,并且迁入设备环境
HPEN hPen = CreatePen ( PS_SOLID , 1, RGB(0 , 255, 0 ) ) ;
HPEN hOld = SelectObject( hDC , hPen ) ;
//绘制线条
MoveTo( hDC , 10, 20 , NULL ) ;
LineTo( hDC , 100 , 90 ) ;
//完成绘制,恢复设备环境
SelectObject( hDC , hOld );
DeleteObject( hPen );
ReleaseDC( hWnd , hDC ) ;
矩形的绘制
矩形绘制函数:
BOOL Rectangle(
HDC hdc ;
int nLetfRect ; //左上角x坐标
int nTopRect; // 左上角y坐标
int nRightRect; //右下角x坐标
int nBottomRect; //右下角y坐标
) ;
例:使用红色画笔绘制矩形,并且使用蓝色画刷填充
//创建画笔和画刷
HPEN hPen = CreatePen ( PS_SOLID , 1 , RGB( 255, 0 , 0 ) ) ;
HBRUSH hBrush = CreateSolidBrush( RGB( 0 , 0 , 255 ));
//选入设备环境
SelectObject( hPen );
SelectObject( hBrush );
//绘制矩形
Rectangle( hDC , 20 , 20 , 40 , 40 );