GDI+的核心:Graphics類
(1)The Graphics class provides methods for drawing lines, curves, figures, images, and text. A Graphics object stores attributes of the display device and attributes of the items to be drawn.【msdn】
Graphics是一個device context和你的drawing conetent之間的一個中介。它存儲了device context的相關(guān)屬性,以及drawing content的屬性。這樣,它就能用自己的方法把drawing content“映射”到device content 之上。
(2)GDI+的核心是Graphics類,包含了顯示、繪圖等功能。它提供了四個構(gòu)造函數(shù):
Graphics::Graphics(Image*)
Graphics::Graphics(HDC)
Graphics::Graphics(HDC,HANDLE)
Graphics::Graphics(HWND,BOOL)
構(gòu)造函數(shù)1從image對象創(chuàng)建一個Graphics類。這種方式允許你在打開某張,或者生成某張位圖之后,應(yīng)用Grapgics的方法對改位圖進行操作。
構(gòu)造函數(shù)2從一個傳統(tǒng)的HDC獲取一個Graphics對象,把傳統(tǒng)的在HDC完成的操作接手過來。也就是當要畫直線,曲線,圖形等時,采用這種構(gòu)造函數(shù)。
后面兩種構(gòu)造函數(shù)這里不說了!
(3)如果讀者有GDI編程經(jīng)驗的話,應(yīng)該會聯(lián)想起CDC::CreateCompatibleDC和CBitmap::
CreateCompatibleBitmap吧?再列舉Graphics中有代表性的用于繪圖的成員函數(shù):
Graphics::DrawArc(Pen*,INT,INT,INT,INT,REAL,REAL)
Graphics::DrawBeziers(Pen*,Point*,INT)
Graphics::DrawClosedCurve(Pen*,Point*,INT)
Graphics::DrawCurve(Pen*,Point*,INT)
Graphics::DrawEllipse(Pen*,Rect&)
Graphics::DrawImage(Image*,RectF&)
Graphics::DrawLine(Pen*,Point&,Point&)
Graphics::DrawPie(Pen*,Rect&,REAL,REAL)
Graphics::DrawPolygon(Pen*,Point*,INT*)
Graphics::DrawRectangle(Pen*,Rect&)
是不是非常象CDC?從這里大家也能猜出一點Graphics類和CDC類的異同吧!簡單的說,Graphics的層次更高一些,封裝的更好。
2 GDI+的幾個特點:
(1)傳統(tǒng)的GDI編程最痛苦的是什么?是不停的CreateObject,SeleteObject,DeleteObject——代碼繁瑣,一不小心還會內(nèi)存泄露……現(xiàn)在GDI+結(jié)束了這一切,就憑這一個理由,也足夠我們轉(zhuǎn)向GDI+了,呵呵。從上面的幾個成員函數(shù)可以看出來,每個繪圖動作都指定了畫筆、刷子或者Image,完全拋棄了SelectObject的概念。
(2)GDI+里面的顏色更加豐富,全面支持32位色,從Color類的構(gòu)造函數(shù)就可以看出來:
Color::Color(BYTE a, BYTE r, BYTE g, BYTE b);其中a就是透明度。
(3)GDI+里的所有函數(shù)都只接受Unicode字符串,編寫代碼的時候需要注意這一點。
本文來自CSDN博客,轉(zhuǎn)載請標明出處:http://blog.csdn.net/keyouan2008/archive/2010/08/13/5809519.aspx