GDI函式呼

GDI函式呼

組成GDI的幾百個函式呼叫可以分為幾大類:取得(或者建立)和釋放(或者清除)裝置內容的函式 我們在前面的章節中已經看到過,您在繪圖時需要裝置內容代號。

簡介,繪圖函式,舉例,

簡介

組成GDI的幾百個函式呼叫可以分為幾大類:
取得(或者建立)和釋放(或者清除)裝置內容的函式 我們在前面的章節中已經看到過,您在繪圖時需要裝置內容代號。GetDC和RealseDC函式讓您在非WM_PAINT的訊息處理期間來做到這一點,而BeginPaint和EndPaint函式(雖然在技術上它們是USER模組而不是GDI模組的一部分)在進行繪圖的WM_PAINT訊息處理期間使用。我們馬上還會介紹有關裝置內容的其他一些函式。
取得有關裝置內容資訊的函式 再以第四章中SYSMETS程式為例,我們使用GetTextMetrics函式來取得有關裝置內容中目前所選字型的尺寸資訊。在本章後面,我們將看到一個取得非常廣泛的裝置內容資訊的>DEVCAPS1程式。

繪圖函式

顯然,在所有前提條件都得以滿足之後,這些函式是真正重要的部分。在上一章中,我們使用TextOut函式在視窗的顯示區域顯示一些文字。我們將看到,其他GDI函式還可以讓您畫線、填入區域。在第十四章和第十五章還會看到如何建立點陣圖圖像。
設定和取得裝置內容參數的函式 裝置內容的「屬性」決定有關繪圖函式如何工作的細節。例如,用SetTextColor來指定TextOut(或者其他文字輸出函式)所繪製的文字色彩。在第四章中SYSMETS程式中,我們使用SetTextAlign來告訴GDI:TextOut函式中的字串的開始位置應該在字串的右邊而不是內定的左邊。裝置內容的所有屬性都有預設值,取得裝置內容時這些預設值就設定好了。對於所有的Set函式,都有相應的Get函式,以允許您取得目前裝置內容屬性。

舉例

使用GDI物件的函式 GDI在這裡變得有點混亂。首先舉一個例子:內定時使用GDI繪製的所有直線都是實線並具有一個標準的寬度。您可能希望繪製更細的直線,或者是由一系列的點或短劃線組成的直線。這種線的寬度和這種線的畫筆樣式不是裝置內容的屬性,而是一個「邏輯畫筆」的特徵。您可以通過在CreatePen、 CreatePenIndirect或ExtCreatePen函式中指定這些特徵來建立一個邏輯畫筆,這些函式傳回一個邏輯畫筆的代號(雖然這些函式被認為是GDI的一部分,但是和大多數GDI函式呼叫不一樣,它們不要求裝置內容的代號)。要使用這個畫筆,就要將畫筆代號選進裝置內容。我們認為,裝置內容中目前選中的畫筆就是裝置內容的一個屬性。這樣,您畫任何線都使用這個畫筆,然後,您可以取消裝置內容中的畫筆選擇,並清除畫筆物件。清除畫筆物件是必要的,因為畫筆定義占用了分配的記憶體空間。除了畫筆以外,GDI物件還用於建立填入封閉區域的畫刷、字型、點陣圖以及GDI的其他一些方面。

相關詞條

熱門詞條

聯絡我們