我正在重新編寫我的應用程序,在那裏我使用Brad Barnhill的Barcode Image Generation Libary
(http://www.codeproject.com/Articles/20823/Barcode-Image-Generation-Library)創建條形碼圖像。圖像不會顯示在Wpf圖像控制
在本文中,所有內容都被解釋爲如何在Windows窗體中執行此操作。但現在 - 使用Wpf - 有一些錯誤。例如:函數Encode
的結果返回System.Drawing.Image
,但是當我想要在Wpf Image Control
中顯示此圖像時,Source
屬性需要System.Windows.Media.ImageSource
。
因此,我做了一些關於如何將Drawing.Image
轉換爲Media.ImageSource
的研究。我發現了一些片段,但他們沒有按預期工作。
目前我使用此代碼:
// Import:
using Media = System.Windows.Media;
using Forms = System.Windows.Forms;
// Setting some porperties of the barcode-object
this.barcode.RotateFlipType = this.bcvm.Rotation.Rotation;
this.barcode.Alignment = this.bcvm.Ausrichtung.Alignment;
this.barcode.LabelPosition = this.bcvm.Position.Position;
// this.bcvm is my BarcodeViewModel for MVVM
var img = this.barcode.Encode(
this.bcvm.Encoding.Encoding,
this.bcvm.EingabeWert,
this.bcvm.ForeColor.ToDrawingColor(),
this.bcvm.BackColor.ToDrawingColor(),
(int)this.bcvm.Breite,
(int)this.bcvm.Hoehe
);
this.imgBarcode.Source = img.DrawingImageToWpfImage();
this.imgBarcode.Width = img.Width;
this.imgBarcode.Height = img.Height;
// My conversion methode. It takes a Drawing.Image and returns a Media.ImageSource
public static Media.ImageSource ToImageSource(this Drawing.Image drawingImage)
{
Media.ImageSource imgSrc = new Media.Imaging.BitmapImage();
using (MemoryStream ms = new MemoryStream())
{
drawingImage.Save(ms, Drawing.Imaging.ImageFormat.Png);
(imgSrc as Media.Imaging.BitmapImage).BeginInit();
(imgSrc as Media.Imaging.BitmapImage).StreamSource = new MemoryStream(ms.ToArray());
(imgSrc as Media.Imaging.BitmapImage).EndInit();
}
return imgSrc;
}
當運行該代碼的轉換圖像(並將其分配給所述圖片控制)沒有什麼顯示
謝謝你克萊門斯!在嘗試你的代碼後,我注意到我只是搞亂了我的XAML。圖像控制由外部堆疊面板邊界混合組成。但你的代碼也可以工作:D – Radinator