本文共 2331 字,大约阅读时间需要 7 分钟。
1、GDI是什么的英文缩写?
Graphics Device Interface
2、什么是设备的无关性?
操作系统屏蔽了硬件设备的差异
3、GDI的主要任务是什么?起到什么样的作用?
主要任务:负责系统与用户或绘图程序之间的信息交换
作用:控制在输出设备上显示图形或文字。4、什么是设备描述表?它的作业是什么?
设备描述表是定义了一系列图形对象及其属性的结构,包括图形模式及其输出。
作用:通过创建和维护设备描述表来完成应用设备响应应用程序的相关操作。5、图形刷新包括什么?
刷新的请求、系统对刷新请求的响应以及具体的刷新方法
6、刷新请求有哪些?
窗口移动后的刷新、被覆盖区域的刷新、以及对象穿越后的刷新
7、应用程序情况下会发生刷新请求?同时发出什么消息?
1、用户区移动或显示2、用户窗口大小改变3、程序通过滚动条滚动窗口4、下拉式菜单关闭并需要恢复被覆盖的部分5、因为清除对话框或消息框等对象需要恢复被覆盖的部分6、光标穿过用户区7、图标拖过用户区上述情况均发出WM_PAINT消息
8、什么是无效区域?
窗口被另一个窗口覆盖的区域
9、有效的刷新方法有哪些?大家觉得哪种比较好?在代码中若主动要求刷新窗口,应该怎么办?
有效的刷新方法有:
1、在内存中保持一个显示输出的副本,当需要重绘窗口时,将副本复制到相应的窗口中。 2、记录曾经发生的事件,在窗口需要刷新时候重新调用窗口执行这个事件。 3、重新绘制图形。第一中对于复杂图形来说较好,第三种对于简单图形来说较好。第二种对于刷新次数少的情况来说较好。
通过InvalidateRect和 InvalidateRgn函数来完成的。InvalidateRect和InvalidateRgn把指定的区域加到窗口的Update Region中,当应用的消息队列没有其他消息时,如果窗口的Update Region不为空时,系统就会自动产生WM_PAINT消息。
10、获取设备环境常用的两种方法是什么?
调用函数BeginPaint或GetDC(GetDCEx)。
11、调用BeginPaint函数和GetDc有什么联系与区别?在实际编程中怎样选择使用?
BeginPaint只用于图形获取设备环境,GetDc使用较为广泛
使用BeginPaint函数获取设备环境后操作区域为无效区域,使用GetDC函数获取设备环境后,操作区域为特定窗口的客户区或整个窗口。 BeginPaint函数获取的设备环境由EndPaint函数释放,GetDc函数获取的设备环境由ReleaseDC函数释放。1.单独使用GetDC时,窗口画面会一直闪烁,CPU占用会一直提高,大概到10%,后面程序直接卡死,出现程序画面卡顿不能操作的情况2.一起使用GetDC和BeginPaint时,在窗口拖出屏幕外再拉进显示器时,画面会有闪烁现象,明显看到画面进行重绘,效果不理想,有时会出现窗体内控件消失的情况3.单独使用BeginPaint,三种情况中效果最佳,窗体拖动时没有明显的闪烁
12、什么是映像模式?想一想,为什么要用映像模式
映像模式定义了将逻辑单位转化为设备的度量单位以及设备的x方向和y方向
作用:,程序员可在一个统一的逻辑坐标系中操作而不必考虑输出设备的坐标系情况。可以统一一个逻辑坐标系,对于同一张图片只需要一个逻辑坐标系,不需要考虑在不同的设备上的显示问题。
13、了解几种常用的映像模式,默认是哪种映像模式。
常用的映像模式:MM_ANISOTROPIC 可以改变坐标轴方向和比例,逻辑单位(坐标系中的单位长度)由SetWindowExtEx或者SetViewportExtEx确定MM_ISOTROPIC 可以改变坐标轴方向但是比例为1:1,逻辑单位(坐标系中的单位长度)由SetWindowExtEx或者SetViewportExtEx确定MM_HIENGLISH Y向上 X向右 逻辑单位0.001英寸MM_HIMETRIC Y向上 X向右 逻辑单位0.01毫米MM_LOENGLISH Y向上 X向右 逻辑单位0.01英寸MM_LOMETRIC Y向上 X向右 逻辑单位0.1毫米MM_TEXT Y向下 X向右 逻辑单位一个像素MM_TWIPS Y向下 X向右 逻辑单位1/1440英寸默认映像模式:MM_TEXT
14、了解映像模式中函数的使用(不需要书面写),可以写部分重点函数的理解。
SetWindowExtEx是用于设置以逻辑单位表示的窗口,SetViewportExtEx是用于设置以物理单位表示的窗口SetWindowOrgEx是用于设置以逻辑单位表示的窗口的原点,SetViewportOrgEx是用于设置以物理单位表示的窗口的原点
15、画笔的操作有哪些?
创建画笔,将画笔选入设备环境和删除画笔
16、了解画笔中使用的函数名字的英文意思,便于大家记忆函数,(不需要书面写出)
画笔的函数的英文名字的意思大部分为汉语直译。
HPEN CreatePen(int nPenStyle, int nWidth, COLORREF crColor); function:指定的样式、宽度和颜色创建画笔 nPenStyle:实线、虚线、点线等等 nWidth:线宽 crColor:颜色
17、了解常用的绘图函数,尤其是饼图函数,椭圆弧线函数。想一想怎么画圆,有没有画圆的函数?
圆是特殊的椭圆形所以画圆可以用Ellipse函数,其中边界矩形的左上角逻辑坐标和边界矩形右下角的逻辑坐标设置为关于原点中心对称。
转载地址:https://blog.csdn.net/z2431435/article/details/104875888 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!