Win API記錄點滴

來源:互聯網
上載者:User

   這裡記敘了在Windows下GDI編程的一些函數,用GDI函數可以有效控制視窗的顯示。尤其涉及到Windows圖形編程,GDI函數將非常有用.
   關於種種函數,在《Windows程式設計》書中有詳盡的描述,《Windows圖形編程》更是闡述了更進階的圖形編程方面的函數和使用.
   首先要說明的是:GDI的主要目的是支援與裝置無關的圖形.圖形的輸出又可分為兩大類,位元圖裝置和向量圖裝置.
   另外,要明白裝置的概念,所謂裝置,打個比方來說,就是畫家作畫的那一套裝置,包括畫板,畫筆,畫夾等.在這裡,我們可以把紙當畫板,可以把桌子當畫板等等.裝置的概念也一樣,可以把視窗當裝置,可以把印表機當裝置,可以把投影儀當作裝置.如果可以的話,硬碟,記憶體當作裝置問題也不大.在Windows中,BRUSH,PEN,FONT就相當於你的畫筆,顏料等.屬於裝置的內容屬性.

   現在,我們用GDI來在螢幕上作畫,在作畫之前,我們要獲得應用程式某個視窗的裝置(因為我們的畫是畫在這個視窗內的).

獲得裝置的方法有很多,介紹幾種:
hdc = GetDC (hwnd) ;
其他行程式
ReleaseDC (hwnd, hdc) ;

hdc = GetWindowDC (hwnd) ;
其他行程式
ReleaseDC (hwnd, hdc)

hdc = CreateDC (pszDriver, pszDevice, pszOutput, pData) ;
其他行程式
DeleteDC (hdc) ;

hdcMem = CreateCompatibleDC (hdc) ;
其他行程式
DeleteDC (hdcMem) ;

具體的可參考MSDN和WINDOWS程式設計.

   裝置的內容是取得了,但是我們的裝置(即畫布)有什麼樣的特徵呢?比如,視窗有多大?有多寬?系統有多少種顏色?這些在作畫時有時需要考慮到.

   取得裝置內容的資訊,有一個函數:
iValue = GetDeviceCaps(hdc,iIndex);
   查看MSDN可以發現,通過它可以獲得很多的資訊,比如,當前的螢幕像素是多少(HORZRES,VERTRES)?,以毫米為單位長寬是多少(HORZSIZE,VERTSIZE),?等等,具體的參數有MSDN可翻查.

下面介紹的是畫線函數:
LineTo 畫直線。
 
Polyline和PolylineTo 畫一系列相連的直線。
 
PolyPolyline 畫多組相連的線。
 
Arc 畫橢圓線。
 
PolyBezier和PolyBezierTo 畫貝茲路徑。

ArcTo和AngleArc 畫橢圓線。
 
PolyDraw 畫一系列相連的線以及貝茲路徑。

畫封閉地區的函數:
Rectangle 畫矩形。
 
Ellipse 畫橢圓。
 
RoundRect 畫帶圓角的矩形。
 
Pie 畫橢圓的一部分,使其看起來像一個扇形。
 
Chord 畫橢圓的一部分,以呈弓形。

 

有些函數可以輔助我們以便畫出需要的圖形,比如:
GetCurrentPositionEx(hdc,&pt); //獲得目前位置
GetClientRect(hwnd,&rect); //獲得視窗的矩形大小

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.