可视化GDI操作题目
1、GDI是什么的英文縮寫?
Graphics Device Interface
2、什么是設(shè)備的無(wú)關(guān)性?
操作系統(tǒng)屏蔽了硬件設(shè)備的差異
3、GDI的主要任務(wù)是什么?起到什么樣的作用?
主要任務(wù):負(fù)責(zé)系統(tǒng)與用戶或繪圖程序之間的信息交換
作用:控制在輸出設(shè)備上顯示圖形或文字。
4、什么是設(shè)備描述表?它的作業(yè)是什么?
設(shè)備描述表是定義了一系列圖形對(duì)象及其屬性的結(jié)構(gòu),包括圖形模式及其輸出。
作用:通過(guò)創(chuàng)建和維護(hù)設(shè)備描述表來(lái)完成應(yīng)用設(shè)備響應(yīng)應(yīng)用程序的相關(guān)操作。
5、圖形刷新包括什么?
刷新的請(qǐng)求、系統(tǒng)對(duì)刷新請(qǐng)求的響應(yīng)以及具體的刷新方法
6、刷新請(qǐng)求有哪些?
窗口移動(dòng)后的刷新、被覆蓋區(qū)域的刷新、以及對(duì)象穿越后的刷新
7、應(yīng)用程序情況下會(huì)發(fā)生刷新請(qǐng)求?同時(shí)發(fā)出什么消息?
1、用戶區(qū)移動(dòng)或顯示 2、用戶窗口大小改變 3、程序通過(guò)滾動(dòng)條滾動(dòng)窗口 4、下拉式菜單關(guān)閉并需要恢復(fù)被覆蓋的部分 5、因?yàn)榍宄龑?duì)話框或消息框等對(duì)象需要恢復(fù)被覆蓋的部分 6、光標(biāo)穿過(guò)用戶區(qū) 7、圖標(biāo)拖過(guò)用戶區(qū)上述情況均發(fā)出WM_PAINT消息8、什么是無(wú)效區(qū)域?
窗口被另一個(gè)窗口覆蓋的區(qū)域
9、有效的刷新方法有哪些?大家覺得哪種比較好?在代碼中若主動(dòng)要求刷新窗口,應(yīng)該怎么辦?
有效的刷新方法有:
1、在內(nèi)存中保持一個(gè)顯示輸出的副本,當(dāng)需要重繪窗口時(shí),將副本復(fù)制到相應(yīng)的窗口中。
2、記錄曾經(jīng)發(fā)生的事件,在窗口需要刷新時(shí)候重新調(diào)用窗口執(zhí)行這個(gè)事件。
3、重新繪制圖形。
第一中對(duì)于復(fù)雜圖形來(lái)說(shuō)較好,第三種對(duì)于簡(jiǎn)單圖形來(lái)說(shuō)較好。第二種對(duì)于刷新次數(shù)少的情況來(lái)說(shuō)較好。
通過(guò)InvalidateRect和 InvalidateRgn函數(shù)來(lái)完成的。InvalidateRect和InvalidateRgn把指定的區(qū)域加到窗口的Update Region中,當(dāng)應(yīng)用的消息隊(duì)列沒有其他消息時(shí),如果窗口的Update Region不為空時(shí),系統(tǒng)就會(huì)自動(dòng)產(chǎn)生WM_PAINT消息。
10、獲取設(shè)備環(huán)境常用的兩種方法是什么?
調(diào)用函數(shù)BeginPaint或GetDC(GetDCEx)。
11、調(diào)用BeginPaint函數(shù)和GetDc有什么聯(lián)系與區(qū)別?在實(shí)際編程中怎樣選擇使用?
BeginPaint只用于圖形獲取設(shè)備環(huán)境,GetDc使用較為廣泛
使用BeginPaint函數(shù)獲取設(shè)備環(huán)境后操作區(qū)域?yàn)闊o(wú)效區(qū)域,使用GetDC函數(shù)獲取設(shè)備環(huán)境后,操作區(qū)域?yàn)樘囟ù翱诘目蛻魠^(qū)或整個(gè)窗口。
BeginPaint函數(shù)獲取的設(shè)備環(huán)境由EndPaint函數(shù)釋放,GetDc函數(shù)獲取的設(shè)備環(huán)境由ReleaseDC函數(shù)釋放。
12、什么是映像模式?想一想,為什么要用映像模式
映像模式定義了將邏輯單位轉(zhuǎn)化為設(shè)備的度量單位以及設(shè)備的x方向和y方向
作用:,程序員可在一個(gè)統(tǒng)一的邏輯坐標(biāo)系中操作而不必考慮輸出設(shè)備的坐標(biāo)系情況??梢越y(tǒng)一一個(gè)邏輯坐標(biāo)系,對(duì)于同一張圖片只需要一個(gè)邏輯坐標(biāo)系,不需要考慮在不同的設(shè)備上的顯示問題。
13、了解幾種常用的映像模式,默認(rèn)是哪種映像模式。
常用的映像模式: MM_ANISOTROPIC 可以改變坐標(biāo)軸方向和比例,邏輯單位(坐標(biāo)系中的單位長(zhǎng)度)由SetWindowExtEx或者SetViewportExtEx確定 MM_ISOTROPIC 可以改變坐標(biāo)軸方向但是比例為1:1,邏輯單位(坐標(biāo)系中的單位長(zhǎng)度)由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向右 邏輯單位一個(gè)像素 MM_TWIPS Y向下 X向右 邏輯單位1/1440英寸默認(rèn)映像模式:MM_TEXT14、了解映像模式中函數(shù)的使用(不需要書面寫),可以寫部分重點(diǎn)函數(shù)的理解。
SetWindowExtEx是用于設(shè)置以邏輯單位表示的窗口, SetViewportExtEx是用于設(shè)置以物理單位表示的窗口 SetWindowOrgEx是用于設(shè)置以邏輯單位表示的窗口的原點(diǎn), SetViewportOrgEx是用于設(shè)置以物理單位表示的窗口的原點(diǎn)15、畫筆的操作有哪些?
創(chuàng)建畫筆,將畫筆選入設(shè)備環(huán)境和刪除畫筆
16、了解畫筆中使用的函數(shù)名字的英文意思,便于大家記憶函數(shù),(不需要書面寫出)
畫筆的函數(shù)的英文名字的意思大部分為漢語(yǔ)直譯。
HPEN CreatePen(int nPenStyle, int nWidth, COLORREF crColor);function:指定的樣式、寬度和顏色創(chuàng)建畫筆nPenStyle:實(shí)線、虛線、點(diǎn)線等等nWidth:線寬crColor:顏色17、了解常用的繪圖函數(shù),尤其是餅圖函數(shù),橢圓弧線函數(shù)。想一想怎么畫圓,有沒有畫圓的函數(shù)?
圓是特殊的橢圓形所以畫圓可以用Ellipse函數(shù),其中邊界矩形的左上角邏輯坐標(biāo)和邊界矩形右下角的邏輯坐標(biāo)設(shè)置為關(guān)于原點(diǎn)中心對(duì)稱。
總結(jié)
以上是生活随笔為你收集整理的可视化GDI操作题目的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php c扩展的方式,php中使用C语言
- 下一篇: 十六进制直接求补码