裝置描述表。

2022-03-12 08:17:49 字數 4059 閱讀 2277

通常在呼叫getdc和beginpaint時,系統用裝置描述表的預設屬性建立乙個dc,使用設定裝置描述表後,不會儲存屬性,下次還得重新設定。如果要儲存,需要設定視窗屬性為:cs_owndc,這樣只需要設定一次裝置描述表屬性就可以了。當然,這個只針對getdc和beginpaint返回的dc。

裝置描述表的屬性(具體屬性值,檢視mfc文件):

virtual int setmapmode(int nmapmode);

說明:設定對映模式,對映模式定義了將邏輯單位轉換為裝置單位的單位量,並定義了x和y的方向。gdi使用對映模式將邏輯座標轉換為適當的裝置座標。mm_text允許應用使用裝置畫素,1邏輯單位等於1畫素。畫素的物理尺寸隨裝置而異。mm_hienglish,mm_himetric,mm_loenglish,mm_lometric和mm_ twips模式對於必須使用具有物理意義單位作圖的應用是很有用的(如使用英吋或公釐)。mm_isotropic 模式保證了1:1的方向比率,可以儲存圖象的精確形狀。mm_anisotropic模式允許x和y軸可以獨立呼叫。

virtual colorref setbkcolor(colorref crcolor);

說明:把當前背景色設定為指定的顏色。如果背景模式是opaque(不透明),系統使用背景色填充行間和字元單元的背景。當位圖在彩色和黑白裝置上下文間轉換時,系統使用背景色。如果裝置不能顯示指定顏色,系統將背景色設成與之最相近的物理色。

int setbkmode(int nbkmode );

說明:設定背景模式。背景模式決定了在繪製文字、陰影畫刷、帶風格的直線時是否將繪圖表面上已存在的背景色覆蓋。

virtual colorref settextcolor(colorref crcolor );

說明:將指定顏色用於文字。當向裝置上下文寫入文字以及在彩色與黑白裝置上下文間轉換點陣圖時,系統使用文字顏色。如果裝置不能顯示指定色,系統將設定與之最接近的文字顏色。字元的背景色是由setbkcolor和setbkmode成員函式指定的。

unit settextalign(unit nflags);

說明:設定文字對齊方式。當輸出顯示或輸出到裝置時,textout和exttextout成員函式使用這些標記來確定文字位置。標記表明了指定點與文字外接矩形之間的關係。該點座標作為引數傳遞給textout成員函式,外接矩形由文字字串的鄰接字元單元形式。

int setrop2(int ndrawmode);

說明:設定繪圖模式。繪圖模式指出筆與被填充物件的顏色是怎樣同顯示表面的顏色組合的。繪圖模式只用於光柵裝置,不用於向量裝置。繪圖模式是雙重的光柵操作**,代表了兩個變數所有可能的布林組合,分別使用and、or、xor(異或)和not運算子。

int setstretchbltmode(int nstretchmode);

說明:為stretchblt成員函式設定位圖擴充套件模式。模式定義了利用該函式壓縮的資訊是如何從位圖中清除的。blackonwhite(stretch_andscans) 和whiteonblack(stretch_ orscans)模式一般用來在黑白點陣圖中儲存前景畫素。coloroncolor (stretch_deletescans)模式用於儲存彩色點陣圖中的顏色。halftone模式比其它模式需要對源圖象作更多的處理,速度比其它模式慢,但質量更高。還要注意,halftone必須在設定了setbrushorgex之後呼叫,以避免畫刷對齊錯誤。還可獲得其它的擴充套件模式,取決於裝置驅動程式的能力。

int setpolyfillmode(int npolyfillmode);

說明:設定多邊形填充模式。當多邊形填充模式為alternate時,系統對每條掃瞄線上的多邊形奇數邊和偶數邊之間的區域進行填充,即系統在第一條和第二條邊之間、第三條和第四條之間的區域內填充,依此類推。這是預設模式。當多邊形填充模式為winding時,系統利用圖形繪製的方向來決定是否填充多邊形。多邊形中線段方向只有順時針和逆時針兩種。當一條從閉合域開始到圖形外部的虛擬直線沿順時針線段移動時,計數增加。當直線沿逆時針線段移動時,計數減小。如果計數值非零,該區域被填充。

int settextcharacterextra(int ncharextra);

說明:設定字元間距。當向裝置上下文寫入文字時,gdi把該間距加在每個字元之上,包括中斷符。預設字元間距值是0。

cpoint setbrushorg(int x ,int y );

cpoint setbrushorg(point point);

說明:指定gdi將要為下乙個畫刷分配初始位置。應用把該畫刷選入裝置上下文中。預設的畫刷初始位置是(0,0)。要改變畫刷的初始位置,為cbrush物件呼叫unrealizeobject函式。呼叫setbrushorg,再呼叫selectobject成員函式就可以將畫刷選入裝置上下文中。不要對庫存cbrush物件使用setbrushorg 。

cpen* selectobject (cpen* ppen);

cbrush* selectobject(cbrush* pbrush);

virtual cfont* selectobject(cfont* pfont);

cbitmap* selectobject(cbitmap* pbitmap);

int selectobject (crgn* prgn);

說明:將物件選入裝置上下文中。cdc類為特定型別的gdi物件提供了五種形式,包括畫筆、畫刷、字型、點陣圖和區域。最新選中的物件將覆蓋同型別的前乙個物件。例如,如果selectobject中通用形式的pobject指向cpen物件,函式將用pobject指定的畫筆作為當前畫筆。應用只能將位圖選入記憶體裝置上下文中,且一次只能放入乙個記憶體裝置上下文。位圖格式必須為黑白模式或與裝置上下文相容,否則selectobject返回錯誤。對windows 3.1及其以後版本,不論是否在元檔案中使用,selectobject返回相同的值。對於早期版本,selectobject在元檔案使用返回值時,如果成功,則返回非零值;失敗則返回0。

cpoint setwindoworg(int x ,int y );

cpoint setwindoworg(point point )

說明:設定裝置上下文的視窗初始位置。它和裝置上下文視窗一起說明了gdi如何將邏輯座標中的點對映到實際裝置座標中。換言之,它們說明了gdi如何將邏輯座標轉換為裝置座標。視窗初始位置表明在裝置座標系統中的點,gdi將檢視埠初始位置與該點對映。視窗初始位置是由setwindoworg成員函式在邏輯座標系統中指定的。gdi在對映其它點時遵從同樣的過程,這需要視窗初始位置與檢視埠初始位置的對映。例如,所有以視窗初始位置為中心的圓周上的點同樣是以檢視埠初始位置為中心的圓周上的點。同樣地,通過視窗初始位置的直線上的所有點也將形成一條通過檢視埠初始位置的直線。

virtual csize setwindowext(int cx ,int cy);

virtual csize setwindowext(size size);

說明:設定視窗擴充套件的x和y擴充套件。視窗和裝置上下文視窗說明了gdi如何將邏輯座標中的點對映到實際裝置座標中。

換言之,它們說明了gdi如何將邏輯座標轉換為裝置座標。

virtual csize setviewportext(int cx ,int cy);

virtual csize setviewportext(size size);

說明:設定檢視埠擴充套件的x和y擴充套件。檢視埠和裝置上下文視窗說明了gdi如何將邏輯座標中的點對映到實際裝置座標中。換言之,它們說明了gdi如何將邏輯座標轉換為裝置座標。當設定以下對映模式時,對setwindowext和setviewportext的呼叫將被覆蓋。

virtual cpoint setviewportorg(int x ,int y );

virtual cpoint setviewportorg (point point );

說明:設定裝置上下文的檢視埠初始位置。檢視埠和裝置上下文視窗說明了gdi如何將邏輯座標中的點對映到實際裝置座標中。換言之,它們說明了gdi如何將邏輯座標轉換為裝置座標。檢視埠初始位置表明在裝置座標系統中的點,gdi將視窗初始位置與該點對映。視窗初始位置是由setwindoworg成員函式在邏輯座標系統中指定的。gdi在對映其它點時遵從同樣的過程,這需要視窗初始位置與檢視埠初始位置的對映。例如,所有以視窗初始位置為中心的圓周上的點同樣是以檢視埠初始位置為中心的圓周上的點。同樣地,通過視窗初始位置的直線上的所有點也將形成一條通過檢視埠初始位置的直線。

裝置描述表DC

win32下獲取dc的 api函式有 hdc beginpaint hwnd hwnd,lppaintstruct lppaint 特定用於wm paint訊息 hdc getdc hwnd hwnd 用於獲得hwnd 引數所指定視窗的客戶區域的hdc。hdc getwindowdc hwnd hw...

OnLButtonDown與裝置描述表

nflags 表示控制鍵狀態 包括 ctrl,shift,滑鼠左 中 右 共5個鍵的狀態 point表示滑鼠座標。相對於當前視窗而言的座標 1裝置描述表概述 當windows要在顯示器或其他裝置上繪製圖形或文字時,其不像dos系統把影象和文字直接輸出到硬體,而是使用乙個裝置描述表來替代硬體裝置的邏輯...

DC裝置描述符表

dc device context 即 裝置描述符表 裝置環境 裝置上下文 這些都是它的名字。是乙個資訊結構體,包含物理輸出裝置及其驅動程式。在windows平台下,所有的的圖形操作都是通過它完成。在mfc中,乙個dc device context 是乙個結構體,它定義了圖形物件的引數設定以及它們的...