C#:通过位图和BitmapImage从内存中获取图像源

时间:2017-03-31 09:04:43

标签: c# wpf bitmap memorystream bitmapimage

- 我正在尝试为卡片扫描仪编写一种方法,我在C#中很新:)

- 我写的应用程序可以扫描并从扫描仪获取图像,但我无法在WPF上显示它们。

- SDK是针对Windows Forms编写的,因此我必须从Bitmap转换为BitmapImage(我实际上做了什么)。

- 当我尝试使用XAML添加源时,它可以正常工作,但它应该从内存中获取源代码!但我不知道它应该如何在C#

请帮忙!我几乎尝试了一切。谢谢

class StartScan
{
    protected internal SDKWrapper sdk = new SDKWrapper();
    MainWindow mw;

    public void Scan()
    {
        try
        {
            ShowImage(sdk.ScanAndGetImage(), false);
        }
        catch (Exception e)
        {           
            System.Console.WriteLine(e.ToString());
        }
    }

    private void ShowImage(System.Drawing.Image image, bool converted)
    {
        mw = new MainWindow();

        if (image == null)
        {
            System.Console.WriteLine("IMAGE=NULL");
            return;
        }
        int displayW =(int) mw.CardBoxRect.Width;
        int displayH = (int) mw.CardBoxRect.Height;

        Bitmap b = new Bitmap(displayW,displayH);

        mw.CardBox.Source = BitmapToImageSource(b);
    }

    BitmapImage BitmapToImageSource(Bitmap bitmap)
    {
        using (MemoryStream memory = new MemoryStream())
        {
            System.Console.WriteLine(bitmap.ToString());
            bitmap.Save(memory, ImageFormat.Bmp);
            memory.Position = 0;
            BitmapImage bitmapimage = new BitmapImage();

            bitmapimage.BeginInit();
            bitmapimage.StreamSource = memory;

            bitmapimage.CacheOption = BitmapCacheOption.OnLoad;
            bitmapimage.EndInit();
            bitmapimage.Freeze();
            return bitmapimage;
        }
    }
}

0 个答案:

没有答案