第6章图形程序的编程基础.ppt

上传人:本田雅阁 文档编号:2257365 上传时间:2019-03-12 格式:PPT 页数:28 大小:202.51KB
返回 下载 相关 举报
第6章图形程序的编程基础.ppt_第1页
第1页 / 共28页
第6章图形程序的编程基础.ppt_第2页
第2页 / 共28页
第6章图形程序的编程基础.ppt_第3页
第3页 / 共28页
亲,该文档总共28页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第6章图形程序的编程基础.ppt》由会员分享,可在线阅读,更多相关《第6章图形程序的编程基础.ppt(28页珍藏版)》请在三一文库上搜索。

1、第6章 图形程序的编程基础,概论,GDI (Graphics Device Interface) Windows系统的一种软件子系统,它按照GDI函数来工作,负责在屏幕显示器和打印机上显示图形。 32位GDI就是GDI32.DLL动态链结库,可以把它理解成GDI函数的解释器并按照解释调用相应的设备驱动程序。 不同的设备有不同的设备驱动程序,这就实现了与设备无关的图形输出,GDI在应用程序和不同输出设备之间起着隔离作用,应用程序只要考虑GDI函数不必考虑设备,是实现设备无关性输出的关键措施。,GDI函数及其分类,取得和释放设备描述表代号的函数 如前所述:BeginPaint、GetDC、GetW

2、indowDC 取得字体尺寸信息的函数:GetTextMetrics 。 绘图函数:LineTo(画直线)等 设定和取得设备描述表中有关属性的函数 SetTextColor、SetTextAlign等 使用GDI对象的函数 逻辑笔、画刷、字体等对象,使用时加载到设备描述表中,GDI绘制的基本图形,直线和曲线 支持直线、矩形、椭圆、圆弧 填入区域 对封闭区域可以使用当前GDI画刷对象进行填图 点阵图 常用于图像的显示:bmp文件 文本,图形程序设计的其他问题,映射模式及其变换 Metafile(元文件) metafile以图形绘制命令描述图像,因此可以对图像进行缩放而不会失真 绘图区域 路径 裁

3、剪 调色盘 打印,设备描述表,取得设备描述表代号的方法 GetWindowDC:获取整个窗口的设备描述表代号,在WM_NCPAINT消息分支中响应。 CreateDC:取得整个屏幕的设备描述表代号,常用于打印机。 CreateIC:获取设备描述表的一些信息,但不能用此绘图。 取得设备描述表中信息的方法 GetDeviceCaps,确定设备处理不同类型图形的能力。 程序,保存设备描述表,原因 希望对改变后的设备描述表属性在下次使用仍然有效。 解决 在注册窗口时加入CS_OWNDC属性,只需初始化一次属性,一般在WM_CREATE消息响应中设置。 CS_OWNDC只影响GetDC和BeginPai

4、nt获得的设备描述表 SaveDC,RestoreDC,设备描述表的构成,由19项构成 如果不对其属性改变,使用的是默认值,如上一章例子中使用的TextOut函数 典型: Tex tColor Font Current Position,解析度,概念 每度量单位内的像素数目,打印机经常用“每英寸的点数(DPI)”表示,显示器以水平和垂直的总像素来表示的。 如果设备的水平解析度与垂直解析度相等,称为正方形像素。 可以使用SM_CXSCREEN和SM_CYSCREEN参数得到像素尺寸,色彩,色彩数 每个像素的色彩数由表达颜色的二进制位数决定,最简单的黑白显示器由1位表达 在大多数GDI函数调用中,

5、使用COLORREF值,该值是一个32位的无正负号长整数,但只用了24位(3个8位,R、G、B3基色各占8位) 通常利用宏RGB构建,画线函数与画笔,处理像素的函数 Windows GDI尽管包含了SetPixel和GetPixel函数,但很少使用它们。 SetPixel (hdc, x, y, crColor) ;/在(x,y)坐标处设置像素颜色crColor GetPixel函数返回指定座标处的像素颜色: crColor = GetPixel (hdc, x, y) ;,画线函数与画笔,画线函数 画线函数的作用是画出图形的轮廓线。Windows支持画直线、椭圆线等 LineTo 画直线。

6、Polyline和PolylineTo 画一系列相连的直线。 PolyPolyline 画多组相连的线。 Arc 画椭圆线。 PolyBezier和PolyBezierTo 画贝塞尔曲线。 正弦曲线程序SINEWAVE,画线函数与画笔,画线函数 与画线函数相关的设备描述表的属性:当前画笔的地址、画笔、背景方式、背景色和绘图模式 MoveToEx函数改变(确定)画笔当前地址,用POINT结构体表达地址信息,可利用GetCurrentPositionEx函数获得画笔当前地址。 图形函数 Rectangle画矩形 Pie 画部分椭圆,呈扇形 Chord画部分椭圆,呈弓形,画线函数与画笔,图形函数 画

7、矩形Rectangle (hdc, xLeft, yTop, xRight, yBottom) ;,画线函数与画笔,图形函数 画椭圆Ellipse(hdc, xLeft, yTop, xRight, yBottom) ; (xLeft, yTop), (xRight, yBottom)构成的虚线称为椭圆的外接矩形,画线函数与画笔,图形函数 画圆角矩形RoundRect(hdc, xLeft, yTop,xRight, yBottom, xCornerEllipse,yCornerEllipse) 如果xCornerEllipse等於xLeft与xRight的差,且yCornerEllipse等

8、於yTop与yBottom的差,那么RoundRect函数将画出一个椭圆,这个椭园是由四个园角所组成。,画线函数与画笔,图形函数 Arc 画椭圆线,Pie 画部分椭圆,呈扇形(封闭),Chord画部分椭圆,呈弓形(封闭) 参数:(hdc, xLeft, yTop, xRight, yBottom, xStart, yStart, xEnd, yEnd),画线函数与画笔,画笔 通常利用设备描述表中的默认画笔进行画线,也可以把预先设计好的画笔放入设备描述表中,然后用其画线。 Windows提供三种画笔:BLACK_PEN, WHITE_PEN,NULL_PEN 获取系统画笔:GetStockObj

9、ect(WHITE_PEN) 设置设备描述表画笔:SelectObject(hdc,hPen);,画线函数与画笔,画笔 画笔的建立 hPen=CreatePen(iPenStyle,iWidth,crColor) CreatePenIndirect(&logpen) hPen=GetObject(hPen,sizeof(LOGPEN), (LPVOID)&logpen iPenStyle:PS_SOLID PS_DASH PS_DOT PS_DASHDOT PS_NULL PS_INSIDEFRAME PS_INSIDEFRAME:与填入区域的函数一起使用时,该样式可以保证画出的线条在边界框之

10、内。,画线函数与画笔,画笔 画笔的删除 在WM_CREATE消息期间建立,则在WM_DESTROY消息期间删除:DeleteObject 在WM_PAINT消息期间建立的画笔,一定要在EndPaint前删除 注意:不要删除设备描述表中当前选择用的画笔,画线函数与画笔,背景模式 OPAQUE(不透明):windows使用背景颜色来填入空隙。 TRANSPARENT(透明):windows不使用背景颜色来填入空隙。 通过SetBkMode改变 背景颜色 通过SetBkColor改变,画线函数与画笔,“位布尔运算”与画线模式 当Windows使用画笔来画线时,它实际上执行的是画笔像素与目标地址处原有

11、像素之间的某种“位布尔运算”。 Windows定义了16中运算模式,亦即画线模式,如R2_COPYPEN,windows只是将画笔像素复制到目标像素。 通过SetROP2(hdc, iDrawMode)改变运算模式 典型: R2_COPYPEN、R2_BLACK、R2_NOP,画图,概念 与画线函数的区别,不仅要画边界框,还要画出区域中填入颜色 图形的填入画刷 默认情况使用白色画刷,windows定义了6种画刷 修改画刷 hBrush=GetStockObject(GRAY_BRUSH) SelectObject(hdc,hBrush) 注:无边框或者无填充的图形,画图,画刷的建立 Creat

12、eSolidBrush(crColor) CreateHatchBrush(iHatchStyle,crColor) iHatchStyle:HS_HORIZONTAL。 画刷的选择和删除 SelectObject(hdc, hBrush) DeleteObject(hBrush),GDI映射方式,概念 为便于用户使用,windows提供了8种设备输出坐标表达方式,如:像素、毫米、英寸等,也就是GDI函数中使用的逻辑单位。 Windows中一切设备都用统一的单位:像素 因此需要将逻辑单位转换到设备单位,即为映射方式,MM_TEXT,MM_LOENGLISH,MM_HIMETRIC。 SetMa

13、pMode(hdc,iMapMode),GDI映射方式,设备坐标和逻辑坐标 Windows中,一切设备都用统一的坐标,此坐标称为设备坐标。 所有设备坐标系都以像素为单位,水平轴上的值从左到右递增,垂直轴上的值从上到下递增。 Windows对所有消息,对所有非GDI函数,甚至一些GDI函数,永远使用设备坐标。,GDI映射方式,设备坐标和逻辑坐标 设备坐标分类 屏幕坐标,屏幕的左上角为(0,0),如CreateDC所获得的设备代号,使用的就是屏幕坐标 全窗口坐标 以程序建立的整个窗口为基准 客户区坐标 最常用的“客户区坐标”,(0,0)是客户区的左上角。 视口和窗口 视口是设备坐标表示的客户区 窗口是逻辑坐标表示的程序显示区,讨论,映射模式、设备坐标、逻辑坐标的概念以及相互之间的关系,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1