




已閱讀5頁(yè),還剩53頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Windows程序設(shè)計(jì) VisualC 版 WindowsProgrammingBasedonVisualC 江蘇大學(xué)計(jì)算機(jī)學(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 是程序員編寫(xiě)與設(shè)備無(wú)關(guān)應(yīng)用程序的基礎(chǔ) GDI 在GDI的基礎(chǔ)上進(jìn)行了改進(jìn) 添加了很多新功能并優(yōu)化了其原有功能 是WindowsXP操作系統(tǒng)中提供二維矢量圖形 圖像處理及字體格式化的部分 它由一組跟圖形處理有關(guān)的托管類(lèi)組成 是 NETFramework的組成部分 一 關(guān)于GDI GDI 核心命名空間 P232 System Drawing 提供GDI 基本圖形功能 更為高級(jí)的功能在System Drawing Drawing2D System Drawing Imaging和System Drawing Text命名空間中提供 5 1GDI 概述 System Drawing Drawing2D 提供高級(jí)的二維圖形處理功能和向量操作功能 System Drawing Imaging 提供高級(jí)的GDI 圖像處理功能 System Drawing Printing 提供與打印相關(guān)的服務(wù) 通常情況下 可以創(chuàng)建PrintDocument類(lèi)的實(shí)例 設(shè)置描述打印內(nèi)容的屬性 然后調(diào)用Print方法進(jìn)行 System Drawing Text 提供高級(jí)的字體處理功能 用戶可以創(chuàng)建和使用字體集合 一 關(guān)于GDI 5 1GDI 概述 System Drawing主要包含的類(lèi)和結(jié)構(gòu) Bitmap 用于位圖處理 Brush 用于區(qū)域填充 自己定義畫(huà)刷格式 抽象基類(lèi) Brushes 采用標(biāo)準(zhǔn)顏色的畫(huà)筆 Font 字體處理 可定義特定的文本格式 包括字體 字號(hào)和字形屬性 Graphics 用于GDI 圖形的繪制 Icon 表示W(wǎng)indows圖標(biāo)Image Bitmap和Metafile類(lèi)的抽象基類(lèi) ImageAnimator 動(dòng)畫(huà)處理 包含基于時(shí)間幀的圖像 Pen 畫(huà)筆 自己定義畫(huà)筆格式 Pens 使用標(biāo)準(zhǔn)顏色的畫(huà)筆 5 1GDI 概述 一 關(guān)于GDI Region 封閉區(qū)域處理 可由矩形和由路徑構(gòu)成SolidBrush 定義單色畫(huà)刷 StringFormat 設(shè)置文本格式 SystemBrushes 系統(tǒng)畫(huà)刷SystemColors 系統(tǒng)顏色SystemFonts 系統(tǒng)字體SystemIcons 系統(tǒng)圖標(biāo)SystemPens 系統(tǒng)畫(huà)筆TextureBrush 紋理畫(huà)刷 使用圖像來(lái)填充區(qū)域內(nèi)部 5 1GDI 概述 一 關(guān)于GDI System Drawing包含的主要結(jié)構(gòu) CharacterRange 指定字符串內(nèi)字符位置的范圍 Color 表示ARGB顏色 Point 二維平面中的點(diǎn) X和Y為整型 PointF 二維平面中的點(diǎn) X和Y為單精度浮點(diǎn)型 Rectangle 矩形 參數(shù)為整型 RectangleF 矩形 參數(shù)為單精度浮點(diǎn)型 Size 尺寸 有寬度和高度 參數(shù)為整型型 SizeF 尺寸 有寬度和高度 參數(shù)為單精度浮點(diǎn)型 5 1GDI 概述 一 關(guān)于GDI 二 使用GDI 的一般方法 使用Paint事件 在Paint事件中 事件數(shù)據(jù)參數(shù)是通過(guò)PaintEventArgs類(lèi)來(lái)傳遞的 該類(lèi)有兩個(gè)重要的屬性 一個(gè)是ClipRectangle 用來(lái)獲取在其中可以進(jìn)行繪畫(huà)的區(qū)域大小 另一個(gè)是Graphics 它是用于繪畫(huà)的Graphics對(duì)象 該對(duì)象提供與窗體或控件相對(duì)應(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對(duì)象 還可以使用Graphics類(lèi)的靜態(tài)成員函數(shù)FromImage 它創(chuàng)建一個(gè)Graphics對(duì)象并與一個(gè)Image對(duì)象相關(guān)聯(lián) Bitmap hmap gcnewBitmap Graphics gr Graphics FromImage hmap 使用Graphics類(lèi)的FromHwnd 靜態(tài)成員函數(shù) 它為指定的窗口句柄返回新的Graphics Graphics gr Graphics FromHwnd this Handle 5 1GDI 概述 1 顏色用Color結(jié)構(gòu)來(lái)表示 它表示一個(gè)ARGB顏色 其中A R G B均是Color結(jié)構(gòu)的屬性 分別表示alpha 紅 綠 藍(lán)分量值 它們都是Byte類(lèi)型 值的范圍為0 255 Color結(jié)構(gòu)中包含許多預(yù)定義的顏色 它們使用靜態(tài)屬性來(lái)表示 需要通過(guò)類(lèi)名來(lái)引用 如 Color Red表示紅色等 除了預(yù)定義的顏色外 用戶還可以調(diào)用Color的靜態(tài)方法FromArgb來(lái)創(chuàng)建自定義顏色 該方法共有四種重載類(lèi)型 在圖形繪制操作中 常常需要使用Color Point Size和Rectangle等簡(jiǎn)單數(shù)據(jù)結(jié)構(gòu) 它們都是值類(lèi)型 三 基本數(shù)據(jù)結(jié)構(gòu) 5 1GDI 概述 三 基本數(shù)據(jù)結(jié)構(gòu) 2 點(diǎn)Point結(jié)構(gòu)用來(lái)表示二維平面中定義的點(diǎn)或一個(gè)位置 x y 其屬性有X和Y 分別表示點(diǎn)的水平坐標(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用來(lái)指定Point的x和y的值 5 1GDI 概述 3 尺寸Size結(jié)構(gòu)常用來(lái)表示一個(gè)尺寸的大小 其屬性有Width和Height 該結(jié)構(gòu)的構(gòu)造函數(shù)原型如下 Size Pointpt Size int32width int32height 其中 pt的X和Y用來(lái)指定Size的Width和Height屬性值 4 矩形Rectangle結(jié)構(gòu)用來(lái)表示一個(gè)矩形的位置和大小 其屬性有 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用來(lái)指定矩形左上角的位置 width和height分別指定矩形的寬度和高度 5 基本運(yùn)算符操作Point Size和Rectangle重載了常用的運(yùn)算符操作 如Point和Size結(jié)構(gòu)的 操作 Rectangle結(jié)構(gòu)的 操作等 5 1GDI 概述 5 2GDI 繪圖基礎(chǔ) 一 坐標(biāo)空間及其相關(guān)屬性 二 畫(huà)筆 三 畫(huà)刷 四 基本繪圖函數(shù) 5 2GDI 繪圖基礎(chǔ) 1 世界坐標(biāo)系 設(shè)備坐標(biāo)系和頁(yè)面坐標(biāo)系世界坐標(biāo)系 用戶坐標(biāo)系 是進(jìn)行圖形輸入輸出所使用的一種與設(shè)備無(wú)關(guān)的笛卡爾坐標(biāo)系 默認(rèn)時(shí)使用像素為單位設(shè)備坐標(biāo)系 在顯示 打印等設(shè)備上進(jìn)行圖形繪制時(shí)所使用的坐標(biāo)系 度量單位為像素 左上角為原點(diǎn) 頁(yè)面坐標(biāo)系 進(jìn)行圖形繪制時(shí)所采用的坐標(biāo)系 默認(rèn)時(shí)使用像素為單位 左上角為原點(diǎn) 這時(shí) 設(shè)備坐標(biāo)和頁(yè)面坐標(biāo)是一致的 一 坐標(biāo)空間及其相關(guān)屬性 5 2GDI 繪圖基礎(chǔ) 2 頁(yè)面坐標(biāo)屬性的設(shè)置PageUnit屬性用來(lái)設(shè)置和獲取頁(yè)坐標(biāo)的度量單位 它通常可以有下列的GraphicsUnit枚舉值 Display 將顯示設(shè)備所采用的單位作為度量單位 通常 視頻顯示使用的單位是像素 打印機(jī)使用的單位是1 100英寸 Pixel 以像素為度量單位 Point 將打印機(jī)點(diǎn) 1 72英寸 指定為度量單位 Inch 將英寸指定為度量單位 Document 將文檔單位 1 300英寸 指定為度量單位 Millimeter 將毫米指定為度量單位 World 將世界坐標(biāo)系單位指定為度量單位 一 坐標(biāo)空間及其相關(guān)屬性 5 2GDI 繪圖基礎(chǔ) 2 頁(yè)面坐標(biāo)屬性的設(shè)置PageScale屬性用來(lái)獲取或設(shè)置相對(duì)于頁(yè)面坐標(biāo)的繪圖比例 原點(diǎn)位置設(shè)置 TranslateTransform 一 坐標(biāo)空間及其相關(guān)屬性 二 畫(huà)筆 P234 1 使用Pen創(chuàng)建畫(huà)筆使用構(gòu)造函數(shù) 4個(gè) 進(jìn)行 Pen pPen gcnewPen Color Red 創(chuàng)建一紅色畫(huà)筆Pen pPen gcnewPen Color Blue 4 藍(lán)色 寬為4的畫(huà)筆畫(huà)筆也可直接用畫(huà)刷來(lái)創(chuàng)建 5 2GDI 繪圖基礎(chǔ) 二 畫(huà)筆 2 畫(huà)筆屬性Width屬性用來(lái)設(shè)置或獲取線寬的 DashStyle用來(lái)獲取或設(shè)置指定線型表8 4StartCap和EndCap用來(lái)獲取或設(shè)置直線的首末兩端的線帽類(lèi)型 表8 2 LineJoin獲取或設(shè)置連續(xù)兩條直線連接處的連接頭樣式3 自定義畫(huà)筆如果DashStyle中定義的線型不能滿足實(shí)際需求 可通過(guò)Pen類(lèi)的DashPattern屬性來(lái)設(shè)置 這時(shí)須將DashStyle屬性設(shè)置為DashStyle Custom DashPattern可用來(lái)獲取或設(shè)置自定義的短劃線和空白區(qū)域的數(shù)組 3 自定義畫(huà)筆public propertyarray DashPattern array get voidset array value DashPattern屬性數(shù)組中的第一個(gè)元素是所設(shè)置的短劃線的長(zhǎng)度 第二個(gè)元素為所設(shè)置的空白區(qū)域的長(zhǎng)度 第三個(gè)元素又是所設(shè)置的短劃線的長(zhǎng)度 依此類(lèi)推 虛線圖案中每個(gè)短劃線和空白區(qū)域的長(zhǎng)度是數(shù)組中的元素值與Pen寬度的乘積 5 2GDI 繪圖基礎(chǔ) 二 畫(huà)筆 OnPaint中添加 Graphics pGH e Graphics pGH PageUnit GraphicsUnit Millimeter Pen pPen gcnewPen Color Black 1 5 畫(huà)粗實(shí)線圓 線寬為1 5mmpGH DrawArc pPen 10 10 40 40 0 360 array dashVals 30 2 2 2 分別表示短劃線長(zhǎng)度 間隔長(zhǎng)度 短劃線長(zhǎng)度 間隔長(zhǎng)度pPen DashStyle Drawing2D DashStyle Custom pPen DashPattern dashVals pPen Width 0 5 在工程上 細(xì)線線寬是粗線線寬的 3 為0 5mmpGH DrawLine pPen 5 30 55 30 畫(huà)水平點(diǎn)劃線pGH DrawLine pPen 30 5 30 55 畫(huà)垂直點(diǎn)劃線 4 使用標(biāo)準(zhǔn)畫(huà)筆Pens和系統(tǒng)畫(huà)筆SystemPensGDI 中 Pens類(lèi)包含了定義標(biāo)準(zhǔn)顏色的靜態(tài)屬性 可直接引用 例如 pGH DrawLine Pens Black 30 5 30 55 除此之外 還可以使用SystemPens類(lèi)來(lái)指定一個(gè)Windows標(biāo)準(zhǔn)界面顏色畫(huà)筆來(lái)繪制圖形 寬度為1個(gè)像素 例如 pGH DrawLine SystemPens Control 30 5 30 55 5 2GDI 繪圖基礎(chǔ) 二 畫(huà)筆 GDI 中 抽象基類(lèi)Brush封裝了畫(huà)刷的基本功能 它派生出Drawing命名空間中的SolidBrush TextureBrush Drawing2D命名空間中的HatchBrush LinearGradientBrush及PathGradientBrush等類(lèi) 分別用于單色畫(huà)刷 紋理畫(huà)刷 陰影畫(huà)刷 線性漸變畫(huà)刷及路徑漸變畫(huà)刷 還可以使用標(biāo)準(zhǔn)畫(huà)刷Drawing Brushes 系統(tǒng)畫(huà)刷Drawing SystemBrushes 1 單色畫(huà)刷 SolidBrush 為SolidBrush類(lèi)的構(gòu)造函數(shù)指定一個(gè)Color值 就可創(chuàng)建一個(gè)單色畫(huà)刷 如 SolidBrush pBrush1 gcnewSolidBrush Color Blue SolidBrush pBrush2 gcnewSolidBrush Color FromArgb 0 0 255 三 畫(huà)刷 P236 5 2GDI 繪圖基礎(chǔ) 2 紋理畫(huà)刷 TextureBrush 用指定的Image圖像填充區(qū)域內(nèi)部 其構(gòu)造函數(shù)有8個(gè)左右 常用的參數(shù)有Image image RectangledstRect RectangleFdstRect WrapModewrapMode image為用來(lái)填充的紋理圖像 dstRect用來(lái)指定圖像中的某一個(gè)區(qū)域來(lái)構(gòu)造紋理畫(huà)刷 wrapMode用來(lái)指定當(dāng)紋理或漸變小于所填充的區(qū)域時(shí)平鋪紋理或漸變的方式 其值可以是以下枚舉成員之一 Clamp 紋理或漸變沒(méi)有平鋪 Tile 平鋪漸變或紋理 TileFlipX 水平反轉(zhuǎn)紋理或漸變 然后平鋪該紋理或漸變 TileFlipY垂直反轉(zhuǎn)紋理或漸變 然后平鋪該紋理或漸變 TileFlipXY 水平和垂直反轉(zhuǎn)紋理或漸變 然后平鋪該紋理或漸變 三 畫(huà)刷 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 畫(huà)出取紋理圖像的區(qū)域pGH DrawRectangle Pens White rc1 定義紋理畫(huà)刷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 陰影畫(huà)刷 HatchBrush 陰影畫(huà)刷是一種由陰影樣式 前景色和背景色屬性構(gòu)成的畫(huà)刷 通過(guò)HatchBrush類(lèi)的構(gòu)造函數(shù)可以直接創(chuàng)建一個(gè)陰影畫(huà)刷 HatchBrush類(lèi)的構(gòu)造函數(shù)的原型如下 HatchBrush HatchStylehatchstyle ColorforeColor HatchBrush HatchStylehatchstyle ColorforeColor ColorbackColor hatchstyle 指定可用于HatchBrush對(duì)象的不同圖案 三 畫(huà)刷 5 2GDI 繪圖基礎(chǔ) 例 在Paint事件處理函數(shù)中添加Graphics pGH e Graphics pGH TranslateTransform 10 10 獲取HatchStyle所有值的名稱Array styleName Enum GetNames Drawing2D HatchStyle typeid 定義圖例和樣式名稱顯示的起點(diǎn)Rectanglehatchrect Rectangle 0 0 100 20 PointFpt 繪制圖例和樣式名稱Int32i 0 while iLength Object oitem styleName GetValue i 將指定字符串轉(zhuǎn)換成HatchStyle枚舉對(duì)象Object ohs Enum Parse Drawing2D HatchStyle typeid oitem ToString 將Object轉(zhuǎn)換成HatchStyle枚舉類(lèi)型Drawing2D HatchStylehs safe cast ohs Drawing2D HatchBrush brush gcnewDrawing2D HatchBrush hs Color Black Color LightSkyBlue 構(gòu)造陰影畫(huà)刷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 漸變畫(huà)刷GDI 提供兩種漸變畫(huà)刷 LinearGradientBrush 線性漸變 和PathGradientBrush 路徑漸變畫(huà)刷 線性漸變 路徑漸變 三 畫(huà)刷 漸變畫(huà)刷的創(chuàng)建及屬性設(shè)置主要通過(guò)LinearGradientBrush和PathGradientBrush類(lèi)的構(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)建一個(gè)正六邊形路徑Drawing2D GraphicsPath path gcnewDrawing2D GraphicsPath path AddLines pt 創(chuàng)建一路徑漸變畫(huà)刷Drawing2D PathGradientBrush pathbrush gcnewDrawing2D PathGradientBrush path 或直接通過(guò)點(diǎn)來(lái)創(chuàng)建 Drawing2D PathGradientBrush pathbrush gcnewDrawing2D PathGradientBrush pt pathbrush CenterPoint Point 30 30 pathbrush CenterColor Color Yellow pathbrush SurroundColors colors 創(chuàng)建一線性漸變畫(huà)刷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 使用路徑漸變畫(huà)刷填充pGH FillRectangle pathbrush rc 使用路徑漸變畫(huà)刷填充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 指定一個(gè)無(wú)效模式 SmoothingMode None 指定不消除鋸齒 四 基本繪圖函數(shù) 5 2GDI 繪圖基礎(chǔ) 實(shí)例 根據(jù)鼠標(biāo)指定的一組點(diǎn)來(lái)畫(huà)出連續(xù)折線 封閉多邊形和樣條曲線 1 創(chuàng)建一個(gè)Windows窗體應(yīng)用程序項(xiàng)目Win Curve 2 為Form1窗體添加一個(gè)Panel 一個(gè)Group控件 在組框中添加三個(gè)單選按鈕 Text分別設(shè)為 連續(xù)折線 封閉多邊形 和 樣條曲線 最后再添加一個(gè)按鈕 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ù)點(diǎn)的個(gè)數(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ù)點(diǎn)來(lái)選擇的類(lèi)型繪制 并繪制各個(gè)頂點(diǎn)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 將集合列表對(duì)象添加到該數(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 強(qiáng)制執(zhí)行Paint事件處理函數(shù) 5 為各單選按鈕添加CheckedChanged事件的共同處理方法On Checked 在其中添加下列代碼 this panel1 Invalidate 強(qiáng)制執(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 強(qiáng)制執(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 編譯運(yùn)行 GDI 和GDI提供多個(gè)類(lèi)用于在Windows窗體上繪制文本 如Graphics類(lèi)的DrawString 它允許指定文本的各種特征 如如位置 邊框 字體和格式等 也可以使用TextRenderer類(lèi)提供的DrawText和MeasureText靜態(tài)方法繪制和測(cè)量文本 5 3GDI 字體和文本繪制 繪制文本之前 一般要構(gòu)造一個(gè)FontFamily對(duì)象和一個(gè)Font對(duì)象 FontFamily對(duì)象指定字樣 例如Arial 而Font對(duì)象指定字號(hào) 字形和單位等 也可直接使用Font構(gòu)造函數(shù)直接構(gòu)造FontFamily對(duì)象 涉及文本操作的其他類(lèi)還包括StringFormat 封裝文本布局信息 顯示操作等功能 和TextFormatFlags 指定文本字符串的顯示和布局信息 提交給用戶進(jìn)行字體設(shè)置可使用通用字體對(duì)話框類(lèi)或控件 可以用各種圖形文件格式 BMP GIF JPEG EXIF PNG TIFF WMF和ICON 構(gòu)造Bitmap對(duì)象 5 4GDI 圖像處理 使用GDI 的Image類(lèi)和Bitmap類(lèi)可以輕松地處理圖像 System Drawing Imaging命名空間提供更為高級(jí)圖像處理功能 DrawImage是GDI 的Graphics類(lèi)顯示圖像的核心方法 它的重載形式有30個(gè) 在其中可以指定要顯示的圖像 顯示圖像的位置 圖像填充的矩形區(qū)域及顯示圖像采用的度量單位等 一 概述 P273 5 4GDI 圖像處理 二 常用的圖像處理操作 1 調(diào)用和顯示圖像文件在GDI 中調(diào)用和顯示圖像文件是非常容易的 一般先通過(guò)Image或Bitmap調(diào)入一個(gè)圖像文件構(gòu)造一個(gè)對(duì)象 然后調(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類(lèi)的RotateFlip方法來(lái)實(shí)現(xiàn)的 其參數(shù)可用來(lái)指定圖像旋轉(zhuǎn)的類(lèi)型 另外 也可指定DrawImage中的參數(shù)destPoints完成該操作 其第一個(gè)點(diǎn)是用來(lái)定義新坐標(biāo)系的原點(diǎn) 第二點(diǎn)用來(lái)定義X軸的方法和圖像X方向的大小 第三個(gè)是用來(lái)定義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 插值模式的使用縮放時(shí)使用插值模式可以控制圖像質(zhì)量 Graphics對(duì)象的InterpolationMode屬性便是為此而設(shè)計(jì) 該枚舉值主要是 3 插值模式的使用Bicubic 指定雙三次插值法 將圖像收縮為原始大小的25 以下時(shí) 此模式不適用 Bilinear 指定雙線性插值法 將圖像收縮為原始大小的50 以下時(shí) 此模式不適用 Default 指定默認(rèn)模式 High 指定高質(zhì)量插值法 HighQualityBicubic 指定高質(zhì)量的雙三次插值法 此模式可產(chǎn)生質(zhì)量最高的轉(zhuǎn)換圖像 HighQualityBilinear 指定高質(zhì)量的雙線性插值法 Low 指定低質(zhì)量插值法 NearestNeighbor 指定最臨近插值法 5 4GDI 圖像處理 二 常用的圖像處理操作 4 圖片格式的轉(zhuǎn)換使用Image類(lèi)的Save方法 可以將圖像按指定的格式保存到文件中 5 4GDI 圖像處理 二 常用的圖像處理操作 實(shí)例 5 4GDI 圖像處理 圖像顯示和保存 1 創(chuàng)建一個(gè)Windows窗體應(yīng)用程序項(xiàng)目Win Image 2 在打開(kāi)的窗體設(shè)計(jì)器中 為Form1窗體添加一個(gè)Label控件和兩個(gè)按鈕 按圖設(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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 無(wú)人機(jī)操控與航拍技術(shù)考核試卷
- 圖書(shū)館數(shù)字資源長(zhǎng)期保存策略考核試卷
- 家電產(chǎn)品品質(zhì)監(jiān)控與質(zhì)量改進(jìn)考核試卷
- 整年運(yùn)輸合同范本
- 大板委托加工合同范本
- 修剪綠化直營(yíng)合同范本
- 工地個(gè)人水電合同范本
- 小學(xué)生美術(shù)課件制作教學(xué)
- 名片合同范本
- 財(cái)務(wù)支出季度計(jì)劃工作的分解與執(zhí)行要點(diǎn)
- GB/T 18601-2009天然花崗石建筑板材
- 畢業(yè)設(shè)計(jì)論文-貝類(lèi)脫殼機(jī)設(shè)計(jì)
- 八項(xiàng)規(guī)定學(xué)習(xí)課件
- 《工程電磁場(chǎng)》配套教學(xué)課件
- 《過(guò)零丁洋》公開(kāi)課件
- 從生產(chǎn)工藝角度詳解磷酸鐵鋰
- 全套橋梁施工技術(shù)交底記錄
- 《教師職業(yè)道德》全書(shū)word版
- 城市定制型商業(yè)醫(yī)療保險(xiǎn)(惠民保)知識(shí)圖譜
- GB∕T 3836.31-2021 爆炸性環(huán)境 第31部分:由防粉塵點(diǎn)燃外殼“t”保護(hù)的設(shè)備
- AMDAR資料的分析和應(yīng)用
評(píng)論
0/150
提交評(píng)論