最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

WPF中圖像處理的方法介紹

 更新時(shí)間:2022年06月17日 09:07:29   作者:天方  
這篇文章介紹了WPF中圖像處理的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

和Winform中的GDI+相比,WPF提供了一組新的API用于顯示和編輯圖像。新API特點(diǎn)如下:

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

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

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

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

  • 簡化的顏色管理

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

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

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

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

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

var imageStreamSource = File.OpenRead(@"r:\1\24.bmp");
var decoder = BitmapDecoder.Create(imageStreamSource, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);
var bitmapFrame = decoder.Frames[0];

//在界面上顯示圖片
//image1.Source = bitmapFrame;

var encoder = new JpegBitmapEncoder();
encoder.Frames.Add(bitmapFrame);
encoder.Save(File.Create(@"r:\1\3.jpg"));

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

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

  • 用編碼器(xxxEncoder)保持圖像信息
    相應(yīng)的,編碼時(shí)只要?jiǎng)?chuàng)建編碼器,并設(shè)置相應(yīng)的幀即可。

圖像處理:

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

var imageStreamSource = File.OpenRead(@"r:\1\24.bmp");
var decoder = BitmapDecoder.Create(imageStreamSource, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);
var bitmapFrame = decoder.Frames[0];  

TransformedBitmap myRotatedBitmapSource = new TransformedBitmap();
myRotatedBitmapSource.BeginInit();
myRotatedBitmapSource.Source = bitmapFrame;  

// 旋轉(zhuǎn)90度
myRotatedBitmapSource.Transform = new RotateTransform(90);
myRotatedBitmapSource.EndInit(); 

//旋轉(zhuǎn)

var rotate = new RotateTransform(90);
var rotatedBitMap = new TransformedBitmap(bitmapFrame, rotate);

image1.Source = rotatedBitMap;

////裁剪
//CroppedBitmap chainedBitMap = new CroppedBitmap(bitmapFrame,new Int32Rect(100, 0, (int)bitmapFrame.Width - 100, (int)bitmapFrame.Height));

////縮放
//var scare = new ScaleTransform(1.5, 2);
//var scaredBitMap = new TransformedBitmap(bitmapFrame, scare);

var encoder = new JpegBitmapEncoder();
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"));

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

<Image Width="150" Margin="5" Grid.Column="0" Grid.Row="1">
  <Image.Source>
    <TransformedBitmap Source="/sampleImages/watermelon.jpg" >
      <TransformedBitmap.Transform>
        <RotateTransform Angle="90"/>
      </TransformedBitmap.Transform>
    </TransformedBitmap>
  </Image.Source>
</Image>

其它變換也都可以參照xaml中處理方式進(jìn)行,這里就不過多介紹了。

到此這篇關(guān)于WPF圖像處理的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C#實(shí)現(xiàn)把dgv里的數(shù)據(jù)完整的復(fù)制到一張內(nèi)存表的方法

    C#實(shí)現(xiàn)把dgv里的數(shù)據(jù)完整的復(fù)制到一張內(nèi)存表的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)把dgv里的數(shù)據(jù)完整的復(fù)制到一張內(nèi)存表的方法,需要的朋友可以參考下
    2014-08-08
  • C#中給Excel添加水印的具體方法

    C#中給Excel添加水印的具體方法

    這篇文章主要介紹了C#中如何給Excel添加水印,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • C#使用iTextSharp獲取PDF文件書簽信息的操作方法

    C#使用iTextSharp獲取PDF文件書簽信息的操作方法

    C# iTextSharp是一個(gè)用于處理PDF文件的源庫,它提供了一系列的功能,包括創(chuàng)建PDF文件,以及提取和操作PDF文件中的內(nèi)容,本文給大家介紹了C#使用iTextSharp獲取PDF文件書簽信息的操作方法,需要的朋友可以參考下
    2024-04-04
  • C#調(diào)用Nero SDK刻錄光盤的方法

    C#調(diào)用Nero SDK刻錄光盤的方法

    這篇文章主要介紹了C#調(diào)用Nero SDK刻錄光盤的方法,涉及C#調(diào)用NeroCOM組件實(shí)現(xiàn)光盤刻錄的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • C#遍歷操作系統(tǒng)下所有驅(qū)動(dòng)器的方法

    C#遍歷操作系統(tǒng)下所有驅(qū)動(dòng)器的方法

    這篇文章主要介紹了C#遍歷操作系統(tǒng)下所有驅(qū)動(dòng)器的方法,涉及C#中DriveInfo類GetDrivers方法的使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-04-04
  • 使用C#對JSON進(jìn)行序列化和反序列化處理的兩種方法

    使用C#對JSON進(jìn)行序列化和反序列化處理的兩種方法

    本指南探討了如何使用 C# 編程語言進(jìn)行 JSON 序列化和反序列化,我們將介紹 .NET 生態(tài)系統(tǒng)中可用的兩個(gè)本機(jī)選項(xiàng),即命名空間和廣泛使用的 Newtonsoft.Json 庫(也稱為 Json.NET),需要的朋友可以參考下
    2024-06-06
  • C#編寫游戲客戶端的實(shí)現(xiàn)代碼

    C#編寫游戲客戶端的實(shí)現(xiàn)代碼

    這篇文章主要介紹了C#編寫游戲客戶端的實(shí)現(xiàn)代碼,連接客戶端原理流程圖,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-11-11
  • C# 線程同步詳解

    C# 線程同步詳解

    本文主要介紹了C#中線程同步的相關(guān)知識(shí)。具有很好的參考價(jià)值,下面跟著小編一起來看下吧
    2017-02-02
  • C#實(shí)現(xiàn)簡單串口通信

    C#實(shí)現(xiàn)簡單串口通信

    這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)簡單串口通信,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • C#使用GDI繪制矩形的方法

    C#使用GDI繪制矩形的方法

    這篇文章主要介紹了C#使用GDI繪制矩形的方法,涉及C#使用GDI繪圖的相關(guān)技巧,需要的朋友可以參考下
    2015-04-04

最新評論

正阳县| 肥城市| 顺昌县| 剑河县| 津市市| 吴江市| 香河县| 蒙山县| 乌拉特前旗| 明溪县| 株洲市| 双城市| 柘城县| 额敏县| 渝北区| 吉隆县| 山东| 宝清县| 和平区| 柳州市| 铜鼓县| 临洮县| 宣化县| 平定县| 彰武县| 察隅县| 阳西县| 怀安县| 中超| 丰都县| 共和县| 监利县| 辉南县| 福建省| 资阳市| 武城县| 咸阳市| 桦南县| 湾仔区| 自治县| 普兰店市|