资源描述:
《WIN32编程入门之GDI绘图资料课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
第二部分Win32SDK编程 绘图的画布—窗口客户区参数:typedefstruct_RECT{LONGleft;//矩形左上角的x坐标.LONGtop;//矩形左上角的y坐标.LONGright;//矩形右下角的x坐标.LONGbottom;//矩形右下角的y坐标.}RECT;GDI绘图的画布 获得窗口客户区域参数:BOOLGetClientRect(HWNDhWnd,//窗口句柄LPRECTlpRect//矩形结构体地址);获取时机:在WM_PAINT消息中获得的是窗口尺寸改变后的客户区参数,如果想要画出来的图形随窗口变化,需要在该消息中使用该函数。GDI绘图的画布 设备上显示的图形型态本身可以被分为几类:设置像素的颜色COLORREFSetPixel(HDChdc,//设备环境句柄intX,//像素的x坐标intY,//像素的y坐标COLORREFcrColor//像素颜色);GDI基本图形—像素操作 设备上显示的图形型态本身可以被分为几类:直线和曲线线条是所有向量图形绘制系统的基础。GDI支持直线、矩形、椭圆(包括椭圆的子集,也就是我们所说的「圆」)、椭圆圆周上的部分曲线即所谓的「弧」以及贝塞尔曲线(Bezierspline)。所有更复杂的曲线可由折线(polyline)代替,折线通过一组非常短的直线来定义一条曲线。线条用设备内容中选中的目前画笔绘制。GDI基本图形—直线 GetCurrentPositionEx(hdc,&pt);BOOLMoveToEx(HDChdc,//设备句柄intX,//目标点的x坐标intY,//目标点的y坐标LPPOINTlpPoint//存放当前点的结构体指针);BOOLLineTo(HDChdc,//设备句柄intnXEnd,//终点的x坐标intnYEnd//终点的y坐标);GDI基本图形—直线 BOOLRectangle(HDChdc,//设备句柄intnLeftRect,//包围矩形的左上角x坐标intnTopRect,//包围矩形的左上角x坐标intnRightRect,//包围矩形的右下角x坐标intnBottomRect//包围矩形的右下角y坐标);GDI基本图形—矩形 BOOLRoundRect(HDChdc,//设备句柄intnLeftRect,//包围矩形的左上角x坐标intnTopRect,//包围矩形的左上角y坐标intnRightRect,//包围矩形的右下角x坐标intnBottomRect,//包围矩形的右下角y坐标intnWidth,//用于画圆角的椭圆的宽度intnHeight//用于画圆角的椭圆的高度);GDI基本图形—圆角矩形 BOOLEllipse(HDChdc,//设备句柄intnLeftRect,//包围矩形的左上角x坐标intnTopRect,//包围矩形的左上角x坐标intnRightRect,//包围矩形的右下角x坐标intnBottomRect//包围矩形的右下角y坐标);GDI基本图形—椭圆 怎样改变绘图时使用的线型以及线条的颜色:HPENhPen,oldPen;hPen=(HPEN)GetStockObject(WHITE_PEN);oldPen=(HPEN)SelectObject(hdc,hPen);GID绘图函数调用;SelectObject(hdc,oldPen);//恢复原来的画笔GDI的画笔—使用系统画笔 HPENCreatePen(intfnPenStyle,//线型intnWidth,//画笔线宽,以像素为单位COLORREFcrColor//画笔颜色,RGB(R,G,B));线型可选参数值:PS_SOLIDPS_DASHPS_DOTPS_DASHDOT等GDI的画笔—创建画笔 使用创建的画笔:HPENhPen,oldPen;hPen=CreatePen(PS_DASHDOTDOT,1,RGB(255,0,0));oldPen=(HPEN)SelectObject(hdc,hPen);GID绘图函数调用;SelectObject(hdc,oldPen);//恢复原来的画笔DeleteObject(hPen);GDI的画笔—创建画笔 填充区域当一系列直线或者曲线封闭了一个区域时,该区域可以使用目前GDI画刷对象进行填图。这个画刷可以是实心色彩、图案(可以是一系列的水平、垂直或者对角标记)或者是在区域内垂直或者水平重复的位图图像。GDI—填充区域函数图形Rectangle直角矩形Ellipse椭圆RoundRect圆角矩形Chord椭圆周上的弧,两端以弦连接Pie椭圆上的饼图Polygon多边形PolyPolygon多个多边形 HBRUSHhBrush,oldBrush;hBrush=(HBRUSH)GetStockObject(GRAY_BRUSH);oldBrush=(HBRUSH)SelectObject(hdc,hBrush);GID绘图函数调用;SelectObject(hdc,oldBrush);//恢复原来的画笔GDI的画刷—使用系统画刷 HBRUSHCreateSolidBrush(COLORREFcrColor//画刷颜色);创建一个单颜色的画刷,即填充区域内使用单一指定的颜色填充HBRUSHCreateHatchBrush(intfnStyle,//线条的图案方式COLORREFcrColor//线条颜色);fnStyle可选参数值:HS_VERTICALHS_DIAGONALHS_CROSS等GDI的画刷—创建画刷 使用创建的画刷:HBRUSHhBrush,oldBrush;hBrush=CreateHatbrush(HS_CROSS,RGB(255,0,0));oldBrush=(HBRUSH)SelectObject(hdc,hBrush);GID绘图函数调用;SelectObject(hdc,oldBrush);//恢复原来的画笔DeleteObject(hdc,hBrush);GDI的画刷—创建画刷 位图位图是位的矩形数组,这些位对应于显示设备上的图素,它们是位映像图形的基础工具。位图通常用于在视讯显示器或者打印机上显示复杂(一般都是真实的)图像。位图还可以用于显示必须快速绘制的小图像(诸如图标、鼠标光标以及在应用工具条中出现的按钮等)。GDI支持两种型态的位图-旧式的(虽然还非常有用)「设备相关」位图,是GDI对象;和新的(如Windows3.0的)「设备无关」位图(或者DIB),可以储存在磁盘文件中。文字文字的数学味道不像计算机图形的其它方面那样浓。文字和几百年的传统印刷术有关,它被许多印刷工人看作为一门艺术。因此,文字通常不仅是所有的计算机图形系统中最复杂的部分,而且(如果识字还是社会基本要求的话)也是最重要的部分。用于定义GDI字体对象和取得字体信息的数据结构是Windows中最庞大的部分之一。从Windows3.1开始,GDI开始支持TrueType字体,该字体是在填入轮廓线基础上建立的,这样的填入轮廓线可由其它GDI函数处理。依据兼容性和储存大小的考虑,Windows98继续支持旧式的点阵字体。我会在第十七章讨论字体。GDI—基本图形 映像模式和变换虽然内定以图素为单位进行绘图,但是您并非局限于此。GDI映像模式允许您以英寸(或者甚至以几分之一英寸)、毫米或者任何您想使用的单位来绘图(WindowsNT还支持传统的以三乘三矩阵表示的「坐标变换」,这允许倾斜和旋转图形对象。MetafileMetafile是以二进制形式储存的GDI命令集合。Metafile主要用于通过剪贴板传输向量图形。第十八章会讨论metafile。绘图区域绘图区域是形状任意的复杂区域,通常定义为较简单的绘图区域组合。在GDI内部,绘图区域除了储存为最初用来定义绘图区域的线条组合以外,还以一系列扫描线的形式储存。您可以将绘图区域用于绘制轮廓、填入图形和剪裁。GDI—其他部分