WPF中圖像處理的方法介紹_第1頁
WPF中圖像處理的方法介紹_第2頁
WPF中圖像處理的方法介紹_第3頁
WPF中圖像處理的方法介紹_第4頁
全文預覽已結(jié)束

下載本文檔

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

文檔簡介

第WPF中圖像處理的方法介紹和Winform中的GDI+相比,WPF提供了一組新的API用于顯示和編輯圖像。新API特點如下:

適用于新的或?qū)S脠D像格式的擴展性模型。

對包括位圖(BMP)、聯(lián)合圖像專家組(JPEG)、可移植網(wǎng)絡圖形(PNG)、標記圖像文件格式(TIFF)、MicrosoftWindowsMedia照片、圖形交換格式(GIF)和圖標(.ico)在內(nèi)的本機圖像格式增強了性能和安全性。

高位深圖像數(shù)據(jù)的保留最多32位/通道。

非破壞性圖像縮放、裁切和旋轉(zhuǎn)。

簡化的顏色管理

支持文件內(nèi)的專用元數(shù)據(jù)。

托管組件利用非托管基礎(chǔ)結(jié)構(gòu)提供圖像與其他WPF功能(如用戶界面(UI)、動畫和圖形)的無縫集成。托管組件還可以從WindowsPresentationFoundation(WPF)圖像處理編解碼器擴展性模型獲益,利用該模型可以實現(xiàn)自動識別WPF中的新圖像格式。

大部分托管的WPF圖像處理API駐留在System.Windows.Media.Imaging命名空間中,不過,幾個重要的類型(如ImageBrush和ImageDrawing)都駐留在System.Windows.Media命名空間,Image駐留在System.Windows.Controls命名空間。

下面我通過一個簡單的示例演示一下新的API的使用方法:

圖像編碼格式轉(zhuǎn)換:

varimageStreamSource=File.OpenRead(@"r:\1\24.bmp");

vardecoder=BitmapDecoder.Create(imageStreamSource,BitmapCreateOptions.PreservePixelFormat,BitmapCacheOption.Default);

varbitmapFrame=decoder.Frames[0];

//在界面上顯示圖片

//image1.Source=bitmapFrame;

varencoder=newJpegBitmapEncoder();

encoder.Frames.Add(bitmapFrame);

encoder.Save(File.Create(@"r:\1\3.jpg"));

這個功能非常簡單,就是把一個bmp格式的圖片轉(zhuǎn)換為了一個jpg格式的圖片。這個示例也顯示了WPF的圖像處理的基本方式:

從解碼器(xxxDecoder)中獲取圖像信息

創(chuàng)建解碼器后,圖像信息就保存在Frames(雖然大部分圖像(jpg,bmp,png等)只有一幀,但GIF,ico等圖像有多幀)屬性中了。

用編碼器(xxxEncoder)保持圖像信息

相應的,編碼時只要創(chuàng)建編碼器,并設(shè)置相應的幀即可。

圖像處理:

常用的圖像處理包括縮放、裁切和旋轉(zhuǎn)等,如下是一個將圖像旋轉(zhuǎn)90度的例子。

varimageStreamSource=File.OpenRead(@"r:\1\24.bmp");

vardecoder=BitmapDecoder.Create(imageStreamSource,BitmapCreateOptions.PreservePixelFormat,BitmapCacheOption.Default);

varbitmapFrame=decoder.Frames[0];

TransformedBitmapmyRotatedBitmapSource=newTransformedBitmap();

myRotatedBitmapSource.BeginInit();

myRotatedBitmapSource.Source=bitmapFrame;

//旋轉(zhuǎn)90度

myRotatedBitmapSource.Transform=newRotateTransform(90);

myRotatedBitmapSource.EndInit();

varrotate=newRotateTransform(90);

varrotatedBitMap=newTransformedBitmap(bitmapFrame,rotate);

image1.Source=rotatedBitMap;

////裁剪

//CroppedBitmapchainedBitMap=newCroppedBitmap(bitmapFrame,newInt32Rect(100,0,(int)bitmapFrame.Width-100,(int)bitmapFrame.Height));

////縮放

//varscare=newScaleTransform(1.5,2);

//varscaredBitMap=newTransformedBitmap(bitmapFrame,scare);

varencoder=newJpegBitmapEncoder();

encoder.Frames.Add(BitmapFrame.Create(rotatedBitMap));

//encoder.Frames.Add(BitmapFrame.Create(scaredBitMap));

//encoder.Frames.Add(BitmapFrame.Create(chainedBitMap));

encoder.Save(File.Create(@"r:\1\3.jpg"));

和上面的例子相比,這里就是多了一個TransformedBitmap變換,其實這和xaml中的變換時一樣的。

ImageWidth="150"Margin="5"Grid.Column="0"Grid.Row="1"

Image.Source

TransformedBitmapSource="/sampleImages/watermelon.jpg"

TransformedBitmap.Transform

RotateTransformAngle="90"/

/TransformedBitmap.Transform

溫馨提示

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

評論

0/150

提交評論