成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

詳細(xì)介紹C# GDI+

開發(fā) 后端
這里展示了C# GDI+在開發(fā)人員與上述設(shè)備之間起著重要的中介作用,包括介紹C# GDI+的工作機(jī)理,以及探討如何實(shí)現(xiàn)一些基本的圖像操作。

關(guān)于C# GDI+

從本質(zhì)上來看,GDI+為開發(fā)者提供了一組實(shí)現(xiàn)與各種設(shè)備(例如監(jiān)視器,打印機(jī)及其它具有圖形化能力但不及涉及這些圖形細(xì)節(jié)的設(shè)備)進(jìn)行交互的庫(kù)函數(shù)。 GDI+的本質(zhì)在于,它能夠替代開發(fā)人員實(shí)現(xiàn)與例如顯示器及其它外設(shè)的交互;而從開發(fā)者角度來看,要實(shí)現(xiàn)與這些設(shè)備的直接交互卻是一項(xiàng)艱巨的任務(wù)。

下圖1展示了C# GDI+在開發(fā)人員與上述設(shè)備之間起著重要的中介作用。其中,GDI+為我們“包辦”了幾乎一切—從把一個(gè)簡(jiǎn)單的字符串“HelloWorld”打印到控制臺(tái)到繪制直線,矩形甚至是打印一個(gè)完整的表單等。

GDI+擔(dān)當(dāng)著重要的中介作用

圖1.GDI+擔(dān)當(dāng)著重要的中介作用

那么,GDI+是如何工作的呢?為了弄清這個(gè)問題,讓我們來分析一個(gè)示例—繪制一條線段。實(shí)質(zhì)上,一條線段就是一個(gè)從一個(gè)開始位置(X0,Y0)到一個(gè)結(jié)束位置(Xn,Yn)的一系列像素點(diǎn)的集合。為了畫出這樣的一條線段,設(shè)備(在本例中指顯示器)需要知道相應(yīng)的設(shè)備坐標(biāo)或物理坐標(biāo)。

然而,開發(fā)人員不是直接告訴該設(shè)備,而是調(diào)用GDI+的drawLine()方法,然后,由GDI+在內(nèi)存(即“視頻內(nèi)存”)中繪制一條從點(diǎn)A到點(diǎn)B的直線。C# GDI+讀取點(diǎn)A和點(diǎn)B的位置,然后把它們轉(zhuǎn)換成一個(gè)像素序列,并且指令監(jiān)視器顯示該像素序列。簡(jiǎn)言之,GDI+把設(shè)備獨(dú)立的調(diào)用轉(zhuǎn)換成了一個(gè)設(shè)備可理解的形式;或者實(shí)現(xiàn)相反方向的轉(zhuǎn)換。

至此,我們已經(jīng)簡(jiǎn)單了解了C# GDI+的工作機(jī)理。現(xiàn)在,讓我們開始探討如何實(shí)現(xiàn)一些基本的圖像操作。

圖像操作—縮略圖,縮放與保存

在本文示例中,我們將實(shí)現(xiàn)如下的任務(wù):

1. 創(chuàng)建縮略圖。

2. 縮放一個(gè)加載的圖像。

3. 保存一個(gè)操作中的圖像。

1) 創(chuàng)建縮略圖

縮略圖是圖像的濃縮版本。典型情況下,一幅縮略圖圖像的尺寸為80×200像素。在GDI+中,一個(gè)圖像的縮略圖可以通過使用Image類的GetThumbnailImage()方法來創(chuàng)建。其函數(shù)原型如下:

  1. public Image GetThumbnailImage {  
  2. int thumbWidth,  
  3. int thumbHeight,  
  4. GetThumbnailImageAbort callback,  
  5. IntPtr callbackData  

第一個(gè)參數(shù)相應(yīng)于縮略圖的寬度;第二個(gè)參數(shù)相應(yīng)于生成的縮略圖的高度;第三個(gè)參數(shù)是一個(gè)Image.GetThumbnailImageAbort 委托。在 GDI+ 1.0 版中不使用此委托。即便如此,也必須創(chuàng)建一個(gè)委托并在該參數(shù)中傳遞對(duì)此委托的引用。第四個(gè)參數(shù)同樣沒有使用,但是也需要提供以實(shí)現(xiàn)兼容性。注意,第四個(gè)參數(shù)必須為IntPtr.Zero。

如果前兩個(gè)參數(shù)(也就是寬度和高度)都為0的話,那么,C# GDI+返回一個(gè)嵌入式縮略圖。否則,使用系統(tǒng)定義尺寸創(chuàng)建該縮略圖。例如,如果img是一個(gè)圖像類的實(shí)例,并且使用的寬度和高度都是系統(tǒng)定義的,創(chuàng)建一個(gè)縮略圖的語句應(yīng)該如下所示:

  1. Image thumbNailImage = img.GetThumbnailImage(0,0,tnCallBack,IntPtr.Zero); 

在此,thumbNailImage包含返回的縮略圖,而tnCallback是一個(gè)相應(yīng)于Image.GetThumbnailImageAbort的函數(shù),其定義如下:

  1. //必須調(diào)用它,但是沒有使用   
  2. style='font-size:10.0pt;font-family:Verdana'>publicbool tnCallbackMethod()  
  3. ...  
  4. {  
  5. return false;  

2) 縮放一個(gè)加載的圖像

縮放是放大或縮小一個(gè)圖像的過程—通過在圖像尺寸上乘以縮放因子實(shí)現(xiàn)。其中,縮放因子=期望的圖像尺寸/當(dāng)前圖像尺寸。例如,要把一個(gè)圖像放大200%,則當(dāng)前尺寸必須乘以200%(200%=200/100=2);為了縮小一個(gè)圖像到25%,則當(dāng)前尺寸必須乘以25%或0.25(25/100=0.25 倍)。

3) 保存圖像

保存操作是圖像操作中的關(guān)鍵操作之一。在保存一個(gè)圖像時(shí),圖像相應(yīng)的類型信息也必須進(jìn)行保存;也就是說,該圖像的擴(kuò)展名在這一過程中具有重要角色。每一種類型相應(yīng)于一個(gè)特定的格式。實(shí)質(zhì)上,在保存一個(gè)圖像時(shí),根據(jù)該格式輸出數(shù)據(jù)是非常必要的。然而,借助于GDI+ API的優(yōu)勢(shì),一個(gè)對(duì)Image類的Save()方法的簡(jiǎn)單調(diào)用就可以把相應(yīng)的寫數(shù)據(jù)操作中所有細(xì)節(jié)省略掉。這個(gè)方法使用兩個(gè)參數(shù)—被保存的圖像的名字和待保存圖像的格式。該格式能夠通過ImageFormat類提供的類型來指定。下列表格指定了C# GDI+支持的各種圖像格式。屬性描述
◆Bmp 指定BMP格式。
◆Emf 指定EMF(增強(qiáng)的元文件格式)。
◆Exif指定EXIF格式。
◆Gif 指定GIF格式。
◆Guid指定一個(gè)GUID結(jié)構(gòu),用于描述ImageFormatobject。
◆Icon指定Windows圖標(biāo)格式。
◆Jpeg指定JPEG格式。
◆MemoryBmp   指定內(nèi)存位圖格式。
◆Png 指定PNG格式。
◆Tiff指定TIFF格式。
◆Wmf 指定WMF(Windows元文件格式)。

其中,Emf和Wmf是特定于Windows系統(tǒng)的。

假定你想使用名字“checker.gif”保存一個(gè)圖像,那么,相應(yīng)的實(shí)現(xiàn)語句將是:

  1. curImage.Save(“checker.gif”,ImageFormat.Gif);  

這里,curImage對(duì)應(yīng)于Image類的實(shí)例。

在下一節(jié)中,我將對(duì)前面開發(fā)的這個(gè)應(yīng)用程序進(jìn)行擴(kuò)展。

【編輯推薦】

  1. 如何用C#和ADO.NET訪問
  2. 淺析C# Switch語句
  3. C#驗(yàn)證輸入方法詳解
  4. 簡(jiǎn)單介紹C# 匿名方法
  5. C# FileSystemWatcher對(duì)象
責(zé)任編輯:佚名 來源: 騰訊科技
相關(guān)推薦

2009-08-19 17:45:26

C#使用GDI+

2024-10-31 11:03:06

C#橢圓運(yùn)動(dòng)緩沖

2009-08-31 17:35:19

C#使用GDI+實(shí)現(xiàn)餅

2024-11-08 14:06:26

2009-08-10 16:30:56

C# BitmapDa

2009-08-12 15:34:40

C# DBNull

2009-08-07 16:10:20

C#調(diào)用API

2009-08-26 17:31:59

C# const常量

2009-08-21 15:16:23

C#使用指針

2009-08-03 18:49:17

C#和Java

2009-08-20 15:26:42

C#循環(huán)語句

2009-08-24 18:21:23

C# ListView

2009-08-14 17:04:50

C#類型系統(tǒng)

2009-08-13 13:38:30

C#命名規(guī)范

2009-08-27 14:32:15

C#編寫ActiveX

2009-08-06 14:59:36

C#編譯器

2009-08-25 17:28:23

C#創(chuàng)建DataSet

2009-08-13 15:40:28

C#基礎(chǔ)知識(shí)

2011-06-08 13:35:18

C#數(shù)據(jù)類型

2009-08-27 17:31:44

C#創(chuàng)建Windows
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 精品亚洲91 | 伊人久久在线观看 | 日韩毛片免费视频 | 成人精品久久 | 麻豆视频国产在线观看 | 国产日韩欧美中文字幕 | 国产精品18毛片一区二区 | 久久小视频 | 围产精品久久久久久久 | 亚洲欧美精品 | 中日韩欧美一级片 | 一级看片 | 一区中文字幕 | 成人精品鲁一区一区二区 | 亚洲三区在线观看 | 亚洲欧美视频 | 国产精品国产三级国产aⅴ入口 | 国产精品美女久久久久久久久久久 | 91成人免费看片 | 国产亚洲一区二区三区在线观看 | 精品乱码一区二区 | 国产精品五区 | 欧美精品第一区 | www97影院 | 日韩三区在线 | 岛国精品 | 中文字幕综合 | 综合久久亚洲 | 日本免费视频在线观看 | 日本不卡一区二区三区 | 亚洲一区二区三区国产 | 中文字幕在线视频精品 | 久久国产精品视频免费看 | 激情黄色在线观看 | 精品久久久久久久久久久 | 久久亚洲国产 | 久久亚洲精品国产精品紫薇 | 蜜桃视频在线观看免费视频网站www | 97视频在线观看网站 | 午夜在线| 亚洲精品日韩在线 |