Win API记录点滴
???這里記敘了在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); //獲得窗口的矩形大小
轉載于:https://www.cnblogs.com/shipfi/archive/2007/01/10/617205.html
總結
以上是生活随笔為你收集整理的Win API记录点滴的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 修改大型 XML 文件的有效方法
- 下一篇: 新媒体技术发展迅猛 手机将让生活产生巨变