Win API记录点滴
???這里記敘了在Windows下GDI編程的一些函數(shù),用GDI函數(shù)可以有效的控制視窗的顯示。尤其涉及到Windows圖形編程,GDI函數(shù)將非常有用.
???關(guān)于種種函數(shù),在《Windows程序設(shè)計》書中有詳盡的描述,《Windows圖形編程》更是闡述了更高級的圖形編程方面的函數(shù)和使用.
???首先要說明的是:GDI的主要目的是支援與裝置無關(guān)的圖形.圖形的輸出又可分為兩大類,位元圖設(shè)備和向量圖設(shè)備.
???另外,要明白裝置的概念,所謂裝置,打個比方來說,就是畫家作畫的那一套設(shè)備,包括畫板,畫筆,畫夾等.在這里,我們可以把紙當畫板,可以把桌子當畫板等等.裝置的概念也一樣,可以把視窗當裝置,可以把打印機當裝置,可以把投影儀當作裝置.如果可以的話,硬盤,內(nèi)存當作裝置問題也不大.在Windows中,BRUSH,PEN,FONT就相當于你的畫筆,顏料等.屬于裝置的內(nèi)容屬性.
???現(xiàn)在,我們用GDI來在屏幕上作畫,在作畫之前,我們要獲得應(yīng)用程序某個窗口的裝置(因為我們的畫是畫在這個窗口內(nèi)的).
獲得裝置的方法有很多,介紹幾種:
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程序設(shè)計.
???裝置的內(nèi)容是取得了,但是我們的裝置(即畫布)有什么樣的特征呢?比如,窗口有多大?有多寬?系統(tǒng)有多少種顏色?這些在作畫時有時需要考慮到.
???取得裝置內(nèi)容的信息,有一個函數(shù):
iValue = GetDeviceCaps(hdc,iIndex);
???查看MSDN可以發(fā)現(xiàn),通過它可以獲得很多的信息,比如,當前的屏幕像素是多少(HORZRES,VERTRES)?,以毫米為單位長寬是多少(HORZSIZE,VERTSIZE),?等等,具體的參數(shù)有MSDN可翻查.
下面介紹的是畫線函數(shù):
LineTo 畫直線。
Polyline和PolylineTo 畫一系列相連的直線。
PolyPolyline 畫多組相連的線。
Arc 畫橢圓線。
PolyBezier和PolyBezierTo 畫貝塞爾曲線。
ArcTo和AngleArc 畫橢圓線。
PolyDraw 畫一系列相連的線以及貝塞爾曲線。
畫封閉區(qū)域的函數(shù):
Rectangle 畫矩形。
Ellipse 畫橢圓。
RoundRect 畫帶圓角的矩形。
Pie 畫橢圓的一部分,使其看起來像一個扇形。
Chord 畫橢圓的一部分,以呈弓形。
?
有些函數(shù)可以輔助我們以便畫出需要的圖形,比如:
GetCurrentPositionEx(hdc,&pt); //獲得目前位置
GetClientRect(hwnd,&rect); //獲得窗口的矩形大小
轉(zhuǎn)載于:https://www.cnblogs.com/shipfi/archive/2007/01/10/617205.html
總結(jié)
以上是生活随笔為你收集整理的Win API记录点滴的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 修改大型 XML 文件的有效方法
- 下一篇: 新媒体技术发展迅猛 手机将让生活产生巨变