




已閱讀5頁,還剩53頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
Windows程序設(shè)計 VisualC 版 WindowsProgrammingBasedonVisualC 江蘇大學(xué)計算機學(xué)院曹漢清E Mail chq 第五章GDI 與圖像處理 內(nèi)容 5 1GDI 概述 5 2GDI 繪圖基礎(chǔ) 5 3GDI 字體和文本繪制 5 4GDI 圖像處理 一 關(guān)于GDI 二 使用GDI 的一般方法 三 基本數(shù)據(jù)結(jié)構(gòu) 5 1GDI 概述 GDI GraphicsDeviceInterface 是程序員編寫與設(shè)備無關(guān)應(yīng)用程序的基礎(chǔ) GDI 在GDI的基礎(chǔ)上進(jìn)行了改進(jìn) 添加了很多新功能并優(yōu)化了其原有功能 是WindowsXP操作系統(tǒng)中提供二維矢量圖形 圖像處理及字體格式化的部分 它由一組跟圖形處理有關(guān)的托管類組成 是 NETFramework的組成部分 一 關(guān)于GDI GDI 核心命名空間 P232 System Drawing 提供GDI 基本圖形功能 更為高級的功能在System Drawing Drawing2D System Drawing Imaging和System Drawing Text命名空間中提供 5 1GDI 概述 System Drawing Drawing2D 提供高級的二維圖形處理功能和向量操作功能 System Drawing Imaging 提供高級的GDI 圖像處理功能 System Drawing Printing 提供與打印相關(guān)的服務(wù) 通常情況下 可以創(chuàng)建PrintDocument類的實例 設(shè)置描述打印內(nèi)容的屬性 然后調(diào)用Print方法進(jìn)行 System Drawing Text 提供高級的字體處理功能 用戶可以創(chuàng)建和使用字體集合 一 關(guān)于GDI 5 1GDI 概述 System Drawing主要包含的類和結(jié)構(gòu) Bitmap 用于位圖處理 Brush 用于區(qū)域填充 自己定義畫刷格式 抽象基類 Brushes 采用標(biāo)準(zhǔn)顏色的畫筆 Font 字體處理 可定義特定的文本格式 包括字體 字號和字形屬性 Graphics 用于GDI 圖形的繪制 Icon 表示W(wǎng)indows圖標(biāo)Image Bitmap和Metafile類的抽象基類 ImageAnimator 動畫處理 包含基于時間幀的圖像 Pen 畫筆 自己定義畫筆格式 Pens 使用標(biāo)準(zhǔn)顏色的畫筆 5 1GDI 概述 一 關(guān)于GDI Region 封閉區(qū)域處理 可由矩形和由路徑構(gòu)成SolidBrush 定義單色畫刷 StringFormat 設(shè)置文本格式 SystemBrushes 系統(tǒng)畫刷SystemColors 系統(tǒng)顏色SystemFonts 系統(tǒng)字體SystemIcons 系統(tǒng)圖標(biāo)SystemPens 系統(tǒng)畫筆TextureBrush 紋理畫刷 使用圖像來填充區(qū)域內(nèi)部 5 1GDI 概述 一 關(guān)于GDI System Drawing包含的主要結(jié)構(gòu) CharacterRange 指定字符串內(nèi)字符位置的范圍 Color 表示ARGB顏色 Point 二維平面中的點 X和Y為整型 PointF 二維平面中的點 X和Y為單精度浮點型 Rectangle 矩形 參數(shù)為整型 RectangleF 矩形 參數(shù)為單精度浮點型 Size 尺寸 有寬度和高度 參數(shù)為整型型 SizeF 尺寸 有寬度和高度 參數(shù)為單精度浮點型 5 1GDI 概述 一 關(guān)于GDI 二 使用GDI 的一般方法 使用Paint事件 在Paint事件中 事件數(shù)據(jù)參數(shù)是通過PaintEventArgs類來傳遞的 該類有兩個重要的屬性 一個是ClipRectangle 用來獲取在其中可以進(jìn)行繪畫的區(qū)域大小 另一個是Graphics 它是用于繪畫的Graphics對象 該對象提供與窗體或控件相對應(yīng)的一種繪圖環(huán)境 重載OnPaint虛函數(shù) protected virtualvoidOnPaint System Windows Forms PaintEventArgs e override 在此處添加自己的代碼Form OnPaint e 一定要有 或在此處添加自己的代碼 5 1GDI 概述 二 使用GDI 的一般方法 調(diào)用控件的CreateGraphics 成員函數(shù) 如在窗體中 Graphics gr this CreateGraphics 如果處理的是Image對象 還可以使用Graphics類的靜態(tài)成員函數(shù)FromImage 它創(chuàng)建一個Graphics對象并與一個Image對象相關(guān)聯(lián) Bitmap hmap gcnewBitmap Graphics gr Graphics FromImage hmap 使用Graphics類的FromHwnd 靜態(tài)成員函數(shù) 它為指定的窗口句柄返回新的Graphics Graphics gr Graphics FromHwnd this Handle 5 1GDI 概述 1 顏色用Color結(jié)構(gòu)來表示 它表示一個ARGB顏色 其中A R G B均是Color結(jié)構(gòu)的屬性 分別表示alpha 紅 綠 藍(lán)分量值 它們都是Byte類型 值的范圍為0 255 Color結(jié)構(gòu)中包含許多預(yù)定義的顏色 它們使用靜態(tài)屬性來表示 需要通過類名來引用 如 Color Red表示紅色等 除了預(yù)定義的顏色外 用戶還可以調(diào)用Color的靜態(tài)方法FromArgb來創(chuàng)建自定義顏色 該方法共有四種重載類型 在圖形繪制操作中 常常需要使用Color Point Size和Rectangle等簡單數(shù)據(jù)結(jié)構(gòu) 它們都是值類型 三 基本數(shù)據(jù)結(jié)構(gòu) 5 1GDI 概述 三 基本數(shù)據(jù)結(jié)構(gòu) 2 點Point結(jié)構(gòu)用來表示二維平面中定義的點或一個位置 x y 其屬性有X和Y 分別表示點的水平坐標(biāo)和垂直坐標(biāo) 該結(jié)構(gòu)的構(gòu)造函數(shù)原型如下 Point int32dw Point Sizesz Point int32x int32y 其中 dw的低16位指定水平x坐標(biāo) 高16位指定垂直y坐標(biāo) sz的寬度Width和高度Height用來指定Point的x和y的值 5 1GDI 概述 3 尺寸Size結(jié)構(gòu)常用來表示一個尺寸的大小 其屬性有Width和Height 該結(jié)構(gòu)的構(gòu)造函數(shù)原型如下 Size Pointpt Size int32width int32height 其中 pt的X和Y用來指定Size的Width和Height屬性值 4 矩形Rectangle結(jié)構(gòu)用來表示一個矩形的位置和大小 其屬性有 Width 矩形水平寬度Height 矩形垂直高度X Y 矩形左上角的x y坐標(biāo) 三 基本數(shù)據(jù)結(jié)構(gòu) 5 1GDI 概述 4 矩形Location 矩形左上角的Point位置Left 矩形左邊的x坐標(biāo)Right 矩形右邊的x坐標(biāo)Top 矩形上邊的y坐標(biāo)Bottom 矩形下邊的y坐標(biāo)Rectangle的構(gòu)造函數(shù)原型如下 Rectangle Pointlocation Sizesize Rectangle int32x int32y int32width int32height 其中 location或x y用來指定矩形左上角的位置 width和height分別指定矩形的寬度和高度 5 基本運算符操作Point Size和Rectangle重載了常用的運算符操作 如Point和Size結(jié)構(gòu)的 操作 Rectangle結(jié)構(gòu)的 操作等 5 1GDI 概述 5 2GDI 繪圖基礎(chǔ) 一 坐標(biāo)空間及其相關(guān)屬性 二 畫筆 三 畫刷 四 基本繪圖函數(shù) 5 2GDI 繪圖基礎(chǔ) 1 世界坐標(biāo)系 設(shè)備坐標(biāo)系和頁面坐標(biāo)系世界坐標(biāo)系 用戶坐標(biāo)系 是進(jìn)行圖形輸入輸出所使用的一種與設(shè)備無關(guān)的笛卡爾坐標(biāo)系 默認(rèn)時使用像素為單位設(shè)備坐標(biāo)系 在顯示 打印等設(shè)備上進(jìn)行圖形繪制時所使用的坐標(biāo)系 度量單位為像素 左上角為原點 頁面坐標(biāo)系 進(jìn)行圖形繪制時所采用的坐標(biāo)系 默認(rèn)時使用像素為單位 左上角為原點 這時 設(shè)備坐標(biāo)和頁面坐標(biāo)是一致的 一 坐標(biāo)空間及其相關(guān)屬性 5 2GDI 繪圖基礎(chǔ) 2 頁面坐標(biāo)屬性的設(shè)置PageUnit屬性用來設(shè)置和獲取頁坐標(biāo)的度量單位 它通??梢杂邢铝械腉raphicsUnit枚舉值 Display 將顯示設(shè)備所采用的單位作為度量單位 通常 視頻顯示使用的單位是像素 打印機使用的單位是1 100英寸 Pixel 以像素為度量單位 Point 將打印機點 1 72英寸 指定為度量單位 Inch 將英寸指定為度量單位 Document 將文檔單位 1 300英寸 指定為度量單位 Millimeter 將毫米指定為度量單位 World 將世界坐標(biāo)系單位指定為度量單位 一 坐標(biāo)空間及其相關(guān)屬性 5 2GDI 繪圖基礎(chǔ) 2 頁面坐標(biāo)屬性的設(shè)置PageScale屬性用來獲取或設(shè)置相對于頁面坐標(biāo)的繪圖比例 原點位置設(shè)置 TranslateTransform 一 坐標(biāo)空間及其相關(guān)屬性 二 畫筆 P234 1 使用Pen創(chuàng)建畫筆使用構(gòu)造函數(shù) 4個 進(jìn)行 Pen pPen gcnewPen Color Red 創(chuàng)建一紅色畫筆Pen pPen gcnewPen Color Blue 4 藍(lán)色 寬為4的畫筆畫筆也可直接用畫刷來創(chuàng)建 5 2GDI 繪圖基礎(chǔ) 二 畫筆 2 畫筆屬性Width屬性用來設(shè)置或獲取線寬的 DashStyle用來獲取或設(shè)置指定線型表8 4StartCap和EndCap用來獲取或設(shè)置直線的首末兩端的線帽類型 表8 2 LineJoin獲取或設(shè)置連續(xù)兩條直線連接處的連接頭樣式3 自定義畫筆如果DashStyle中定義的線型不能滿足實際需求 可通過Pen類的DashPattern屬性來設(shè)置 這時須將DashStyle屬性設(shè)置為DashStyle Custom DashPattern可用來獲取或設(shè)置自定義的短劃線和空白區(qū)域的數(shù)組 3 自定義畫筆public propertyarray DashPattern array get voidset array value DashPattern屬性數(shù)組中的第一個元素是所設(shè)置的短劃線的長度 第二個元素為所設(shè)置的空白區(qū)域的長度 第三個元素又是所設(shè)置的短劃線的長度 依此類推 虛線圖案中每個短劃線和空白區(qū)域的長度是數(shù)組中的元素值與Pen寬度的乘積 5 2GDI 繪圖基礎(chǔ) 二 畫筆 OnPaint中添加 Graphics pGH e Graphics pGH PageUnit GraphicsUnit Millimeter Pen pPen gcnewPen Color Black 1 5 畫粗實線圓 線寬為1 5mmpGH DrawArc pPen 10 10 40 40 0 360 array dashVals 30 2 2 2 分別表示短劃線長度 間隔長度 短劃線長度 間隔長度pPen DashStyle Drawing2D DashStyle Custom pPen DashPattern dashVals pPen Width 0 5 在工程上 細(xì)線線寬是粗線線寬的 3 為0 5mmpGH DrawLine pPen 5 30 55 30 畫水平點劃線pGH DrawLine pPen 30 5 30 55 畫垂直點劃線 4 使用標(biāo)準(zhǔn)畫筆Pens和系統(tǒng)畫筆SystemPensGDI 中 Pens類包含了定義標(biāo)準(zhǔn)顏色的靜態(tài)屬性 可直接引用 例如 pGH DrawLine Pens Black 30 5 30 55 除此之外 還可以使用SystemPens類來指定一個Windows標(biāo)準(zhǔn)界面顏色畫筆來繪制圖形 寬度為1個像素 例如 pGH DrawLine SystemPens Control 30 5 30 55 5 2GDI 繪圖基礎(chǔ) 二 畫筆 GDI 中 抽象基類Brush封裝了畫刷的基本功能 它派生出Drawing命名空間中的SolidBrush TextureBrush Drawing2D命名空間中的HatchBrush LinearGradientBrush及PathGradientBrush等類 分別用于單色畫刷 紋理畫刷 陰影畫刷 線性漸變畫刷及路徑漸變畫刷 還可以使用標(biāo)準(zhǔn)畫刷Drawing Brushes 系統(tǒng)畫刷Drawing SystemBrushes 1 單色畫刷 SolidBrush 為SolidBrush類的構(gòu)造函數(shù)指定一個Color值 就可創(chuàng)建一個單色畫刷 如 SolidBrush pBrush1 gcnewSolidBrush Color Blue SolidBrush pBrush2 gcnewSolidBrush Color FromArgb 0 0 255 三 畫刷 P236 5 2GDI 繪圖基礎(chǔ) 2 紋理畫刷 TextureBrush 用指定的Image圖像填充區(qū)域內(nèi)部 其構(gòu)造函數(shù)有8個左右 常用的參數(shù)有Image image RectangledstRect RectangleFdstRect WrapModewrapMode image為用來填充的紋理圖像 dstRect用來指定圖像中的某一個區(qū)域來構(gòu)造紋理畫刷 wrapMode用來指定當(dāng)紋理或漸變小于所填充的區(qū)域時平鋪紋理或漸變的方式 其值可以是以下枚舉成員之一 Clamp 紋理或漸變沒有平鋪 Tile 平鋪漸變或紋理 TileFlipX 水平反轉(zhuǎn)紋理或漸變 然后平鋪該紋理或漸變 TileFlipY垂直反轉(zhuǎn)紋理或漸變 然后平鋪該紋理或漸變 TileFlipXY 水平和垂直反轉(zhuǎn)紋理或漸變 然后平鋪該紋理或漸變 三 畫刷 5 2GDI 繪圖基礎(chǔ) Graphics pGH e Graphics RectanglercCircle Rectangle 0 0 100 100 rcCircle Offset 20 20 Image img this BackgroundImage Rectanglerc1 Rectangle 0 0 30 30 rc1 Offset img Width 2 img Height 2 畫出取紋理圖像的區(qū)域pGH DrawRectangle Pens White rc1 定義紋理畫刷System Drawing TextureBrush brush gcnewSystem Drawing TextureBrush img rc1 按默認(rèn)平鋪方式填充pGH FillRectangle brush rcCircle pGH DrawRectangle Pens White rcCircle 按Clamp方式填充rcCircle Offset 120 0 brush WrapMode Drawing2D WrapMode Clamp pGH FillRectangle brush rcCircle pGH DrawRectangle Pens White rcCircle 按TileFlipX方式填充rcCircle Offset 120 0 brush WrapMode Drawing2D WrapMode TileFlipX pGH FillRectangle brush rcCircle pGH DrawRectangle Pens White rcCircle 按TileFlipY方式填充rcCircle Offset 120 0 brush WrapMode Drawing2D WrapMode TileFlipY pGH FillRectangle brush rcCircle pGH DrawRectangle Pens White rcCircle 按TileFlipXY方式填充rcCircle Offset 120 0 brush WrapMode Drawing2D WrapMode TileFlipXY pGH FillRectangle brush rcCircle pGH DrawRectangle Pens White rcCircle 3 陰影畫刷 HatchBrush 陰影畫刷是一種由陰影樣式 前景色和背景色屬性構(gòu)成的畫刷 通過HatchBrush類的構(gòu)造函數(shù)可以直接創(chuàng)建一個陰影畫刷 HatchBrush類的構(gòu)造函數(shù)的原型如下 HatchBrush HatchStylehatchstyle ColorforeColor HatchBrush HatchStylehatchstyle ColorforeColor ColorbackColor hatchstyle 指定可用于HatchBrush對象的不同圖案 三 畫刷 5 2GDI 繪圖基礎(chǔ) 例 在Paint事件處理函數(shù)中添加Graphics pGH e Graphics pGH TranslateTransform 10 10 獲取HatchStyle所有值的名稱Array styleName Enum GetNames Drawing2D HatchStyle typeid 定義圖例和樣式名稱顯示的起點Rectanglehatchrect Rectangle 0 0 100 20 PointFpt 繪制圖例和樣式名稱Int32i 0 while iLength Object oitem styleName GetValue i 將指定字符串轉(zhuǎn)換成HatchStyle枚舉對象Object ohs Enum Parse Drawing2D HatchStyle typeid oitem ToString 將Object轉(zhuǎn)換成HatchStyle枚舉類型Drawing2D HatchStylehs safe cast ohs Drawing2D HatchBrush brush gcnewDrawing2D HatchBrush hs Color Black Color LightSkyBlue 構(gòu)造陰影畫刷pGH FillRectangle brush hatchrect 填充矩形 繪制樣式名稱pt X float hatchrect X pt Y float hatchrect Bottom pGH DrawString oitem ToString this Font Brushes Black pt hatchrect Offset 130 0 if hatchrect Right e ClipRectangle Right hatchrect Offset 0 40 hatchrect X 0 i 4 漸變畫刷GDI 提供兩種漸變畫刷 LinearGradientBrush 線性漸變 和PathGradientBrush 路徑漸變畫刷 線性漸變 路徑漸變 三 畫刷 漸變畫刷的創(chuàng)建及屬性設(shè)置主要通過LinearGradientBrush和PathGradientBrush類的構(gòu)造函數(shù)進(jìn)行 5 2GDI 繪圖基礎(chǔ) Graphics pGH e Graphics pGH TranslateTransform 10 10 doubler 50 0 doubleangle 0 0 array pt gcnewarray 6 for inti 0 i colors gcnewarray 6 colors 0 Color Red colors 1 Color Green colors 2 Color Blue colors 3 Color AliceBlue colors 4 Color LightPink colors 5 Color Azure 定義并創(chuàng)建一個正六邊形路徑Drawing2D GraphicsPath path gcnewDrawing2D GraphicsPath path AddLines pt 創(chuàng)建一路徑漸變畫刷Drawing2D PathGradientBrush pathbrush gcnewDrawing2D PathGradientBrush path 或直接通過點來創(chuàng)建 Drawing2D PathGradientBrush pathbrush gcnewDrawing2D PathGradientBrush pt pathbrush CenterPoint Point 30 30 pathbrush CenterColor Color Yellow pathbrush SurroundColors colors 創(chuàng)建一線性漸變畫刷Drawing2D LinearGradientBrush linebrush gcnewDrawing2D LinearGradientBrush Rectangle 0 0 20 20 Color Red Color Blue Drawing2D LinearGradientMode BackwardDiagonal Rectanglerc Rectangle 0 0 150 100 rc Offset 50 30 pGH FillPath pathbrush path 使用路徑漸變畫刷填充pGH FillRectangle pathbrush rc 使用路徑漸變畫刷填充pGH DrawRectangle Pens Blue rc rc Offset 180 0 pGH FillRectangle linebrush rc 四 基本繪圖函數(shù) P240 5 2GDI 繪圖基礎(chǔ) Graphics的SmoothingMode屬性用于指定是否將平滑處理 消除鋸齒 應(yīng)用于直線 曲線或已填充區(qū)域的邊緣 SmoothingMode AntiAlias 消除鋸齒 SmoothingMode Default 不消除鋸齒 SmoothingMode HighQuality 高質(zhì)量平滑處理 但處理速度慢 SmoothingMode HighSpeed 高速度平滑處理 但處理質(zhì)量較低 SmoothingMode Invalid 指定一個無效模式 SmoothingMode None 指定不消除鋸齒 四 基本繪圖函數(shù) 5 2GDI 繪圖基礎(chǔ) 實例 根據(jù)鼠標(biāo)指定的一組點來畫出連續(xù)折線 封閉多邊形和樣條曲線 1 創(chuàng)建一個Windows窗體應(yīng)用程序項目Win Curve 2 為Form1窗體添加一個Panel 一個Group控件 在組框中添加三個單選按鈕 Text分別設(shè)為 連續(xù)折線 封閉多邊形 和 樣條曲線 最后再添加一個按鈕 Text設(shè)為 清除 設(shè)置有關(guān)屬性 3 為Form1添加如下私有成員 并為Panel控件添加Paint事件 private staticArrayList points gcnewArrayList private PointptPrev 5 2GDI 繪圖基礎(chǔ) 四 基本繪圖函數(shù) private System Voidpanel1 Paint System Object sender System Windows Forms PaintEventArgs e Graphics pGH e Graphics 根據(jù)點的個數(shù)確定單選按鈕是否禁用if this points CountradioButton1 Checked true this radioButton2 Enabled false this radioButton3 Enabled false else this radioButton2 Enabled true if this points Count 4 this radioButton3 Enabled true 根據(jù)點來選擇的類型繪制 并繪制各個頂點if this points Countpoints Count 1 Pointpt safe cast this points 0 pGH FillRectangle Brushes DarkBlue pt X 2 pt Y 2 4 4 return array ptarray gcnewarray this points Count 將集合列表對象添加到該數(shù)組中for inti 0 ipoints Count i ptarray i safe cast this points i pGH FillRectangle Brushes DarkBlue ptarray i X 2 ptarray i Y 2 4 4 pGH SmoothingMode Drawing2D SmoothingMode AntiAlias if this radioButton1 Checked pGH DrawLines Pens Blue ptarray elseif this radioButton2 Checked pGH DrawPolygon Pens Blue ptarray elseif this radioButton3 Checked pGH DrawCurve Pens Blue ptarray 1 0 4 為清除按鈕添加Click事件處理 函數(shù)體中代碼 this points Clear this panel1 Invalidate 強制執(zhí)行Paint事件處理函數(shù) 5 為各單選按鈕添加CheckedChanged事件的共同處理方法On Checked 在其中添加下列代碼 this panel1 Invalidate 強制執(zhí)行Paint 6 為Panel控件添加MouseDown事件處理方法 private System Voidpanel1 MouseDown System Object sender System Windows Forms MouseEventArgs e ptPrev Point e X e Y points Add ptPrev this panel1 Invalidate 強制執(zhí)行Paint事件 7 為Panel控件添加MouseMove事件處理方法 并添加下列代碼 5 2GDI 繪圖基礎(chǔ) 四 基本繪圖函數(shù) private System Voidpanel1 MouseMove System Object sender System Windows Forms MouseEventArgs e if this points Countpoints Count 1 Pointpt safe cast points nIndex Graphics g this panel1 CreateGraphics 創(chuàng)建與panel1控件相關(guān)聯(lián)的Graphicsg DrawLine gcnewPen panel1 BackColor pt ptPrev ptPrev Point e X e Y g DrawLine Pens Gray pt ptPrev 5 2GDI 繪圖基礎(chǔ) 四 基本繪圖函數(shù) 8 編譯運行 GDI 和GDI提供多個類用于在Windows窗體上繪制文本 如Graphics類的DrawString 它允許指定文本的各種特征 如如位置 邊框 字體和格式等 也可以使用TextRenderer類提供的DrawText和MeasureText靜態(tài)方法繪制和測量文本 5 3GDI 字體和文本繪制 繪制文本之前 一般要構(gòu)造一個FontFamily對象和一個Font對象 FontFamily對象指定字樣 例如Arial 而Font對象指定字號 字形和單位等 也可直接使用Font構(gòu)造函數(shù)直接構(gòu)造FontFamily對象 涉及文本操作的其他類還包括StringFormat 封裝文本布局信息 顯示操作等功能 和TextFormatFlags 指定文本字符串的顯示和布局信息 提交給用戶進(jìn)行字體設(shè)置可使用通用字體對話框類或控件 可以用各種圖形文件格式 BMP GIF JPEG EXIF PNG TIFF WMF和ICON 構(gòu)造Bitmap對象 5 4GDI 圖像處理 使用GDI 的Image類和Bitmap類可以輕松地處理圖像 System Drawing Imaging命名空間提供更為高級圖像處理功能 DrawImage是GDI 的Graphics類顯示圖像的核心方法 它的重載形式有30個 在其中可以指定要顯示的圖像 顯示圖像的位置 圖像填充的矩形區(qū)域及顯示圖像采用的度量單位等 一 概述 P273 5 4GDI 圖像處理 二 常用的圖像處理操作 1 調(diào)用和顯示圖像文件在GDI 中調(diào)用和顯示圖像文件是非常容易的 一般先通過Image或Bitmap調(diào)入一個圖像文件構(gòu)造一個對象 然后調(diào)用Graphics DrawImage方法在指定位置處顯示全部或部分圖像 Graphics gr e Graphics Image image Image FromFile L 1 jpg gr DrawImage image 10 10 Rectanglerect Rectangle 20 10 image Width image Height gr DrawImage image rect 5 4GDI 圖像處理 二 常用的圖像處理操作 Imaging Metafile metafile gcnewImaging Metafile 2 emf gr DrawImage metafile 10 image Height 20 2 圖像旋轉(zhuǎn)和拉伸圖像的旋轉(zhuǎn)可以使用Image類的RotateFlip方法來實現(xiàn)的 其參數(shù)可用來指定圖像旋轉(zhuǎn)的類型 另外 也可指定DrawImage中的參數(shù)destPoints完成該操作 其第一個點是用來定義新坐標(biāo)系的原點 第二點用來定義X軸的方法和圖像X方向的大小 第三個是用來定義Y軸的方法和圖像Y方向的大小 若destPoints定義的新坐標(biāo)系中兩軸方向不垂直 就能達(dá)到圖像拉伸的效果 Graphics gr e Graphics Image image Bitmap FromFile L s bmp Rectanglerect Rectangle 10 10 150 250 gr DrawImage image rect array pts Point 2500 10 Point 350 100 Point 200 150 gr DrawImage image pts 5 4GDI 圖像處理 二 常用的圖像處理操作 3 插值模式的使用縮放時使用插值模式可以控制圖像質(zhì)量 Graphics對象的InterpolationMode屬性便是為此而設(shè)計 該枚舉值主要是 3 插值模式的使用Bicubic 指定雙三次插值法 將圖像收縮為原始大小的25 以下時 此模式不適用 Bilinear 指定雙線性插值法 將圖像收縮為原始大小的50 以下時 此模式不適用 Default 指定默認(rèn)模式 High 指定高質(zhì)量插值法 HighQualityBicubic 指定高質(zhì)量的雙三次插值法 此模式可產(chǎn)生質(zhì)量最高的轉(zhuǎn)換圖像 HighQualityBilinear 指定高質(zhì)量的雙線性插值法 Low 指定低質(zhì)量插值法 NearestNeighbor 指定最臨近插值法 5 4GDI 圖像處理 二 常用的圖像處理操作 4 圖片格式的轉(zhuǎn)換使用Image類的Save方法 可以將圖像按指定的格式保存到文件中 5 4GDI 圖像處理 二 常用的圖像處理操作 實例 5 4GDI 圖像處理 圖像顯示和保存 1 創(chuàng)建一個Windows窗體應(yīng)用程序項目Win Image 2 在打開的窗體設(shè)計器中 為Form1窗體添加一個Label控件和兩個按鈕 按圖設(shè)置控件Text及有關(guān)屬性 3 為 調(diào)入 和 保存 按鈕添加Click事件 代碼分別為 private System Voidbutton1 Click System Object sender System EventArgs e OpenFileDialog pofd gcnewOpenFileDialog pofd Filter L 位圖文件 bmp bmp JPG圖像文件 jpg jpg 所有圖像文件 bmp jpg gif wmf emf ico png System Windows Forms DialogResultnresult pofd ShowDialog if nresult System Windows Forms DialogResult O
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 人民醫(yī)院護(hù)士勞動合同范例
- 2024年高級審計師對企業(yè)戰(zhàn)略的審計試題及答案
- 光伏勞務(wù)居間合同范例
- (工裝)空調(diào)改造合同范例
- 個人器材租賃合同范例
- 三方報價協(xié)議合同范例
- 產(chǎn)品消費合同范例
- 乙方派遣勞務(wù)合同范例
- 供水運營合同范例
- 企業(yè)解散勞務(wù)合同樣本
- 00510秘書實務(wù)-自考整合版
- 護(hù)理研究中的偏倚及控制
- 小學(xué)生的齲齒預(yù)防ppt課件
- [復(fù)習(xí)]邊坡客土吹附施工方案
- 門禁一卡通系統(tǒng)解決方案
- 沖壓試題庫及答案文檔
- 煤礦機電運輸專業(yè)質(zhì)量標(biāo)準(zhǔn)化管理制度
- 華為保密制度范文
- 凍庫溫度記錄表
- 工程款支付審核記錄表
- 成套開關(guān)柜GGD樣本
評論
0/150
提交評論