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

下載本文檔

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

文檔簡(jiǎn)介

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

2、atchStyleForwardDiagonal(上斜線(xiàn))HatchStyleBackwardDiagonal(下斜線(xiàn))HatchStyleCross(十字線(xiàn))HatchStyleDiagonalCross (交叉線(xiàn))HatchStyle30Percent(30%填充)HatchStyleSolidDiamond (實(shí)心菱形)直線(xiàn)漸變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分別用來(lái)指定矩形區(qū)域的左上角和右下角點(diǎn)坐標(biāo)。color1和color2分別用來(lái)指定 漸變起始和終止的顏色。rect用來(lái)指定一個(gè)矩形區(qū)域的大小和位置,angle用來(lái)指定漸變的方向角度,正值為順時(shí)針。isAngleScalable是一個(gè)即將廢除的

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

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

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

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

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

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

10、logfont) 是其中比較常用的構(gòu)造函數(shù)之一,可以看出是完全與GDI兼容的。GDI+只有一個(gè)輸出文本的函數(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用來(lái)指定要輸出的字符串,length表示該字符串的長(zhǎng)度,font用來(lái)指定字體, layoutRect用來(lái)指定一個(gè)字符串所輸出的矩形區(qū)域,stringFormat用來(lái)指定文本輸出格式化屬性,origin用來(lái)指定字符串輸出的起 點(diǎn)。需要注意的是,PointF和RectF類(lèi)與Poin

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

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

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

15、個(gè)。常用的一般重載函數(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)用來(lái)指定圖像i

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

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論