高級GDI圖形編程(1)

1.圖形設備描述表
一個圖形描述表實際上就是對一種安裝在系統中的視頻圖象卡的描述。同時要記住的是同時還是當前繪製工具的描述。

2色彩、畫筆和畫刷
a.能夠在計算機屏幕上繪製的對象的類型並沒有多少。只有點、線和矩形。其他的任何東西都是這些基本圖元對象類型的組合。
b.GDI一般一次只使用一個畫筆和畫刷。在你的系統配置中可以有許多畫筆和畫刷,但是在當前圖形設備描述表中每次只有一個畫筆或畫刷被激活。這樣就必須爲圖形設備描述表選擇對象,以便於使用。

3使用畫筆
a.畫筆句柄稱之爲HPEN. HPEN pen_1 = NULL
b.創建畫筆的兩種方法
   (1)HPEN white_pen = NULL;
      White_pen = GetStockObject(WHITE_PEN);
   (2)自定義方法:HPEN CreatePen(int fnPenStyle,
                                int nWidth,
                                COLORREF crColor)
      例如:HPEN red_pen = CreatePen(PS_SOLID,1,RGB(255,0,0));

4在圖形設備描述表中選擇畫筆
HGDIOBJ SelectObject(HDC hdc,
             HGDIOBJ hgdiobj)
需要注意的是,該函數可以在調用時保存上一個對象句柄並一直存儲着新句柄。
例如:HDC hdc;
     HPEN blue_pen = CreatePen(PS_SOLID,1,RGB(0,0,255));
     HPEN old_pen = NULL;
     old_pen = SelectObject(hdc,blue_pen);
根據上面的代碼,應該很清楚怎樣恢復原來的畫筆句柄。


5.DeleteObject()函數的使用
(1)當已經使用GetStoctObject()或CreatePen()創建的畫筆進行工作之後,必須保存它們。該項工作就由DeleteObject()函數來完成,該函數與SelectObject()函數相類似,也是一個多種組合形式的函數,可以刪除多種不同的句柄類型
函數原型BOOL DeleteObject(HGDIOBJ hobject);
(2)注意,當刪除一個當前選定的對象,或者選定一個已經刪除的對象,將導致發生錯誤,並且可能是一個GP默認值
(3)可以在程序結束時進行DeleteObject()工作,但是如果創建時使用對象較多,則應該在不使用時隨時刪除它們,因爲資源有限。
(4)不要嘗試刪除已經刪除過的對象,這樣會導致無法預料的結果

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章