私はBrad Barnhill(http://www.codeproject.com/Articles/20823/Barcode-Image-Generation-Library)のBarcode Image Generation Libary
を使用してバーコードイメージを作成しています。イメージはWpf Image Controlに表示されません
この記事では、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