- 4
- 0
- 约1.22万字
- 约 53页
- 2021-09-10 发布于河北
- 举报
第4章 Windows的图形设备接口及Windows绘图;;
设备描述表即为设备环境的属性的集合。;应用程序;图形刷新是绘图过程中必须考虑的重要问题;(2) 系统对刷新请求的响应
当用户区的内容需要刷新时,系统向应用程序消息队列发送WM_PAINT消息,系统在应用程序的消息队列中加入该消息,以通知窗口函数执行刷新处理;窗口被另一个窗口覆盖的区域称为无效区域。
Windows系统为每个窗口建立了一个PAINTSTRUCT结构,该结构中包含了包围无效区域的一个最小矩形的结构RECT,应用程序可以根据这个???效矩形执行刷新操作。 ;常用的Windows应用程序刷新窗口的方法;;(2) 调用GetDC函数
如果绘图工作并非由WM_PAINT消息驱动,则调用GetDC函数获取设备环境。
hdc=GetDC(hwnd); ;
映像模式定义了将逻辑单位转化为设备的度量单位以及设备的x方向和y方向,程序员可在一个统一的逻辑坐标系中操作而不必考虑输出设备的坐标系情况。;默认的映射模式; 应用程序可获取设备环境的当前映像模式,并根据需要设置映像模式。;窗口区域的定义由SetWindowExtEx函数完成,其函数原型为:BOOL SetWindowExtEx
( HDC hdc,
int nHeight,nWidth, //以逻辑单位表示的窗口区域高宽度
LPSIZE lpSize, //函数调用前窗口区域尺寸的SIZE结构地址
);;视口的默认原点和窗口的默认原点均为(0,0)。可通过调用函数SetViewportOrgEx和SetWindowOrgEx设定窗口与视口的原点。
SetWindowOrgEx函数的原型为:
BOOL SetWindowOrgEx
(
HDC hdc,
int X,Y, //以逻辑单位表示的窗口原点坐标
LPPOINT lpPoint //函数调用前原点坐标的POINT结构的地址
);;;(2) 创建新画笔,形式如下:
hP=CreatePen
(
int nPenStyle, //确定画笔样式
int nWidth, //画笔宽度
COLORREF rgbColor //画笔颜色
);;
画刷的创建与应用与画笔很相似,操作画刷也包括创建、选入设备环境和删除。
(1) 画刷的创建
使用画刷需事先定义一个画刷句柄。形式如下:
HBRUSH hBr; //hBr为画刷句柄
然后调用函数GetStockObject获取Windows系统提供的7种画刷
hBr=(HBRUSH)GetStockObject(nBrushStyle)画刷样式;可调用函数CreateSolidBrush和CreateHatchBrush创建画刷,
hBr=CreateSolidBrush(rgbColor); ;;;(4) 绘制椭圆弧线的函数Arc
BOOL Arc
(
HDC hdc,
int X1,intY1, //边框矩形左上角的逻辑坐标
int X2,int Y2, //边框矩形右下角的逻辑坐标
int X3,int Y3, //椭圆弧起始点坐标
int X4,int Y4 //椭圆弧终止点坐标
) ;(5) 绘制饼图,并用当前画刷进行填充
BOOL Pie
(
HDC hdc,
int X1,intY1, //边框矩形左上角的逻辑坐标
int X2,int Y2, //边框矩形右下角的逻辑坐标
int X3,int Y3, //椭圆弧起始经线的确定点坐标
int X4,int Y4 //椭圆弧终止经线的确定点坐标
);(6) 绘制矩形,并用当前画刷进行填充
BOOL Rectangle(HDC hdc,int X1,int Y1,int X2,int Y2);
【例4-1】利用绘图函数创建填充区。共有三个填充图形,第一个是用深灰色画刷填充带圆角的矩形,第二个是采用亮灰色画刷填充一个椭圆形图,第三个是用虚画刷填充饼形图。;BOOL InitWindowsClass(HINSTANCE hInstance);
BOOL InitWindows(HINSTANCE hInstance,int nCmdShow);
HWND hWndMain;long WINAPI WndProc(HWND hWnd,UINT iMessage,
UINT wParam,LONG lParam) {
HDC hDC; //定义指向设备的句柄
HBRUSH hBrush; //定义指向画刷的句柄
HPEN hPen; //定义指
原创力文档

文档评论(0)