ImageSource的使用


很多時候,我們會使用圖片來裝飾UI,比如作為控件背景等。
而這些圖片可以分為兩種形式,即存在於本地文件系統中的圖片和存在於內存中的圖片
對於這兩種形式的圖片,在WPF中,使用方法不同,下面主要說明針對這兩種形式圖片的使用方法
一、存在於本地文件系統中的圖片文件
對於此類圖片,使用非常簡單,在xaml中直接指定路徑即可,如:

 

1<Button>
2 <Button.Background>
3 <ImageBrush ImageSource="bg.jpg"/>
4 </Button.Background>
5</Button>
對應的的C#代碼為

 

1ImageBrush imageBrush = new ImageBrush();
2imageBrush.ImageSource = new BitmapImage(new Uri("bg.jpg", UriKind.Relative));
3button.Background = imageBrush;
其中imageBrush.ImageSource的類型為ImageSource,而ImageSource是個抽象類,
因此我們不能直接使用它,而是使用它的子類來代替,查閱MSDN,可以看到它們的繼承關系:
System.Windows.Media.ImageSource
System.Windows.Media.DrawingImage
System.Windows.Media.Imaging.BitmapSource
二、存在於內存中的圖片
對於只存在於內存中的圖片,用以上方法就顯得無能為力了,我們應該另尋他法,下面介紹一種方法:
先看代碼:

 

1//此處圖片從文件中讀入用以模擬內存中的圖片
2System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap("bg.jpg");
3MemoryStream stream = new MemoryStream();
4bitmap.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
5ImageBrush imageBrush = new ImageBrush();
6ImageSourceConverter imageSourceConverter = new ImageSourceConverter();
7
8imageBrush.ImageSource = (ImageSource)imageSourceConverter.ConvertFrom(stream);
9button.Background = imageBrush;

 

其中bitmap即是存在於內存中的Bitmap類型圖片,此處使用直接加載本地圖片文件模擬。
步驟是先將它保存到流中,再使用ImageSourceConverter 類的ConvertFrom方法從流中得到我們需要的圖片


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM