C++GDI+畫刷、矩陣、基本繪圖函數(shù)、文字、圖像_第1頁
C++GDI+畫刷、矩陣、基本繪圖函數(shù)、文字、圖像_第2頁
C++GDI+畫刷、矩陣、基本繪圖函數(shù)、文字、圖像_第3頁
C++GDI+畫刷、矩陣、基本繪圖函數(shù)、文字、圖像_第4頁
C++GDI+畫刷、矩陣、基本繪圖函數(shù)、文字、圖像_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、C+ GDI+ 畫刷、矩陣、基本繪圖函數(shù)、文字、圖像 主要畫刷單色畫刷SolidBrush SolidBrush(const Color& color );網(wǎng)格畫刷HatchBrush HatchBrush( HatchStyle hatchStyle, const Color& foreColor, const Color& backColor); foreColor和backColor用來指定陰影線顏色和填充的背景顏色,背景色可以不指定。hatchStyle用來指定陰影線的樣式。預(yù)定義樣式:HatchStyleHorizontal (水平線)HatchStyleVertical(垂直線)H

2、atchStyleForwardDiagonal(上斜線)HatchStyleBackwardDiagonal(下斜線)HatchStyleCross(十字線)HatchStyleDiagonalCross (交叉線)HatchStyle30Percent(30%填充)HatchStyleSolidDiamond (實心菱形)直線漸變LinearGradientBrush LinearGradientBrush( Point & point1, Point & point2, Color & color1, Color & color2);LinearGradientBrush( Rect &

3、 rect, Color & color1, Color & color2, REAL angle, BOOL isAngleScalable );LinearGradientBrush( Rect & rect, Color & color1, Color & color2, LinearGradientMode mode); point1和point2分別用來指定矩形區(qū)域的左上角和右下角點坐標(biāo)。color1和color2分別用來指定 漸變起始和終止的顏色。rect用來指定一個矩形區(qū)域的大小和位置,angle用來指定漸變的方向角度,正值為順時針。isAngleScalable是一個即將廢除的

4、參數(shù)。mode用來指定漸變的方法。預(yù)定義樣式:LinearGradientModeHorizontal (水平方向)LinearGradientModeVertical (垂直方向)LinearGradientModeForwardDiagonal (從左下到右上的對角線方向)LinearGradientModeBackwardDiagonal (從左上到右下的對角線方向)路徑漸變PathGradientBrushPathGradientBrush( const GraphicsPath* path); PathGradientBrush( const Point * points, INT

5、count, WrapMode wrapMode); path用來指定一個路徑指針,points和count分別用來指定組成路徑的一系列直線端點的數(shù)組及其大小, wrapMode是一個可選項,用來指定填充的包圍模式。一個包圍模式用來決定是否在區(qū)域內(nèi)部、在區(qū)域外部以及所有區(qū)域都填充。默認(rèn)時,其值為 WrapModeClamp,即在區(qū)域內(nèi)部填充。圖像畫刷TextureBrush TextureBrush(Image*, WrapMode);矩陣圖形變換一般是對圖形的幾何信息經(jīng)過幾何變換后產(chǎn)生新的圖形。常見二維圖形的變換有平移、比例、對稱、旋轉(zhuǎn)、錯切 等。圖形幾何變換最有效的手段是采用矩陣變換,GD

6、I+就有這樣的矩陣類Matrix,它為我們提供了許多變換的方法,如Invert(轉(zhuǎn)置)、 Multiply(矩陣相乘)、Rotate(旋轉(zhuǎn))等。需要說明的是,除了使用Matrix進(jìn)行圖形變換外,Graphics本身提供相應(yīng)的變換方法,如RotateTransform(旋轉(zhuǎn)變換)、ScaleTransform(比例變換)和TranslateTransform(平移變換)等?;纠L圖函數(shù)繪圖函數(shù) 功能描述 DrawArc 繪制一條圓弧曲線,范圍由起止角大小決定,大小由矩形或長寬值指定 DrawBezier 繪制一條由一系列型值頂點決定的三次Bezier曲線 DrawBeziers 繪制一系列的三次

7、Bezier曲線DrawClosedCurve 繪制一條封閉的樣條曲線DrawCurve 繪制一條樣條曲線DrawEllipse 繪制一條橢圓輪廓線,大小由矩形或長寬值指定DrawLine 繪制一條直線DrawPath 繪制由GraphicsPath定義的路徑輪廓線DrawPie 繪制一條扇形(餅形)輪廓線DrawPolygon 繪制一個多邊形的輪廓線DrawRectangle 繪制一個矩形FillEllipse 填充一個橢圓區(qū)域FillPath 填充一個由路徑指定的區(qū)域FillPie 填充一個扇形(餅形)區(qū)域FillPolygon 填充一個多邊形區(qū)域FillRectangle 填充一個矩形區(qū)

8、域FillRectangles 用同一個畫刷填充一系列矩形區(qū)域FillRegion 填充一個區(qū)域(Region)的內(nèi)部文字Font( FontFamily* , REAL , INT , Unit ) 字體的主要構(gòu)造函數(shù)FontFamily fontFamily(L幼圓); /定義字型Font font(&fontFamily, 12, FontStyleRegular, UnitPoint); /定義字體FontFamily * : 指向用來定義字型的類的指針。REAL : 字號,這里的字號可以使用小數(shù)定義。而且字號的單位也是由第4個參數(shù)指定的。INT : 字體風(fēng)格,F(xiàn)ontStyleReg

9、ular(正常)、FontStyleBold(加粗)、 FontStyleItalic(斜體)、FontStyleBoldItalic (粗斜體)、FontStyleUnderline(下劃線) 和FontStyleStrikeout(刪除線)。Unit : GDI+為用戶提供了UnitDisplay(1/75英寸)、UnitPixel(像素)、UnitPoint(點)、UnitInch(英寸)、UnitDocument(1/300英寸)、UnitMillimeter(毫米)等字體尺寸單位。為了兼容GDI 字體還有其他的幾個構(gòu)造函數(shù)Font( HDC hdc, const LOGFONTW*

10、logfont) 是其中比較常用的構(gòu)造函數(shù)之一,可以看出是完全與GDI兼容的。GDI+只有一個輸出文本的函數(shù)DrawString,原型如下DrawString( const WCHAR* string, INT length, const Font* font,const RectF& layoutRect, const StringFormat* stringFormat,const Brush* brush );DrawString( const WCHAR* string, INT length, const Font* font,const PointF& origin, const

11、Brush* brush );DrawString( const WCHAR* string, INT length, const Font* font,const PointF& origin, const StringFormat* stringFormat,const Brush* brush);其中,string用來指定要輸出的字符串,length表示該字符串的長度,font用來指定字體, layoutRect用來指定一個字符串所輸出的矩形區(qū)域,stringFormat用來指定文本輸出格式化屬性,origin用來指定字符串輸出的起 點。需要注意的是,PointF和RectF類與Poin

12、t和Rect類基本相同,所不同的是數(shù)據(jù)類型是浮點而后者是INT型。brush用來指定一個畫 刷,這個畫刷既可以是SolidBrush和HatchBrush,也可以是TextureBrush(紋理畫刷),甚至是漸變畫刷。在GDI+中,我們還可以通過SetTextRenderingHint來控制文本輸出的質(zhì)量。文本的格式屬性通常包括對齊方式、字符間隔以及文本調(diào)整等。GDI+提供StringFormat類來控制這些格式屬性,通常我們調(diào)用以下幾個函數(shù)來進(jìn)行相關(guān)屬性設(shè)置。Status SetAlignment ( StringAlignment align );Status SetLineAlignme

13、nt ( StringAlignment align );上面的兩個函數(shù)是用來定義文本對齊方式的,align可以是StringAlignmentNear(左對齊或右對齊,取決于書寫方向是從左到右還是從右到左)、StringAlignmentCenter(居中)或StringAlignmentFar(兩端對齊)。Status SetFormatFlags( INT flags );該函數(shù)用來設(shè)置文本格式化標(biāo)志,flags可以是StringFormatFlagsDirectionRightToLeft (水平閱讀方向是從右向左) 和StringFormatFlagsDirectionVertica

14、l(垂直文本)等值。圖像GDI+的Image類封裝了對BMP、GIF、JPEG、PNG、TIFF、WMF(Windows元文件)和 EMF(增強WMF)圖像文件的調(diào)入、格式轉(zhuǎn)換以及簡單處理的功能。而Bitmap是從Image類繼承的一個圖像類,它封裝了Windows位圖操作的常用功能。例如,Bitmap:SetPixel和Bitmap:GetPixel分別用來對位圖進(jìn)行讀寫像素操作,從而可以為圖像的柔化和銳化處理提供一種可能。Metafile類別通過提供記錄和檢驗矢量圖像的其它方法,增強Image類別的功能。DrawImage是GDI+的Graphics類顯示圖像的核心方法,它的重載函數(shù)有許多

15、個。常用的一般重載函數(shù)有:Status DrawImage( Image* image, INT x, INT y);Status DrawImage( Image* image, const Rect& rect);Status DrawImage( Image* image, const Point* destPoints, INT count);Status DrawImage( Image* image, INT x, INT y, INT srcx, INT srcy,INT srcwidth, INT srcheight, Unit srcUnit);其中,(x,y)用來指定圖像i

16、mage顯示的位置,這個位置和image圖像的左上角點相對應(yīng)。rect用來指定被圖像填充的矩形區(qū)域, destPoints和count分別用來指定一個多邊形的頂點和頂點個數(shù)。若count為3時,則表示該多邊形是一個平行四邊形,另一個頂點由系統(tǒng)自動給出。此時,destPoints中的數(shù)據(jù)依次對應(yīng)于源圖像的左上角、右上角和左下角的頂點坐標(biāo)。srcx、srcy、srcwidth 和srcheight用來指定要顯示的源圖像的位置和大小,srcUnit用來指定所使用的單位,默認(rèn)時使用PageUnitPixel,即用像素作為度量單位。需要注意的是,在不指定范圍的情況下,DrawImage會拉伸圖像鋪滿整個設(shè)備。Image還提供GetThumbnailImage的方法用來獲得一個縮略圖的指針,調(diào)用DrawImage后可將該縮略圖顯示,這在圖像預(yù)覽時極其有用。Status DrawImage( Image* image, const Point* destPoints, INT count);里面的destPoints和count用來指定一個數(shù)組和數(shù)組的大小。這個重載可以用來旋轉(zhuǎn)圖像。destPoints中的第一個點是用來定義坐標(biāo)原點的,第二點用來定義X軸的方

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論