C# 如何从inkcanvas(wpf)直接获取位图图像

C# 如何从inkcanvas(wpf)直接获取位图图像,c#,wpf,ocr,inkcanvas,C#,Wpf,Ocr,Inkcanvas,我正在做一个OCR项目。我必须从inkcanvas中的输入中获取图像,以便在下一步进行处理,即将该图像转换为二维数组 我对如何从inkcanvas获取位图图像进行处理感到困惑。我一直在从许多来源寻找解决方案,但其中很多只是将inkcanvas保存到文件流 请帮帮我! 非常感谢查看此博客帖子: 这将为位图获取一个字节数组,因为您正在进行OCR,这应该足够了。我知道这个问题比较老,但我还必须从墨水画布获取位图。因此,要回答如何直接从ink画布获取位图的问题,这里有一个解决方案。希望它仍然有用

我正在做一个OCR项目。我必须从inkcanvas中的输入中获取图像,以便在下一步进行处理,即将该图像转换为二维数组

我对如何从inkcanvas获取位图图像进行处理感到困惑。我一直在从许多来源寻找解决方案,但其中很多只是将inkcanvas保存到文件流

请帮帮我! 非常感谢

查看此博客帖子:


这将为位图获取一个字节数组,因为您正在进行OCR,这应该足够了。

我知道这个问题比较老,但我还必须从墨水画布获取位图。因此,要回答如何直接从ink画布获取位图的问题,这里有一个解决方案。希望它仍然有用

    private System.Drawing.Image ConvertInkCanvasToImage()
    {

      //create temporary InkCanvas or send it in as a parameter
      InkCanvas inkCanvas = new InkCanvas();      
      inkCanvas = viewModel.InkCanvas;

      //render bitmap
      RenderTargetBitmap rtb = new RenderTargetBitmap((int)inkCanvas.ActualWidth, (int)inkCanvas.ActualHeight, 96, 96, System.Windows.Media.PixelFormats.Default);
      rtb.Render(inkCanvas);
      BmpBitmapEncoder encoder = new BmpBitmapEncoder();
      encoder.Frames.Add(BitmapFrame.Create(rtb));
      rtb.Render(inkCanvas);

      //save to memory stream or file 
      System.IO.MemoryStream ms = new System.IO.MemoryStream();
      encoder.Save(ms);  

      //creat bitmap with memory stream or file
      Bitmap bitmap = new Bitmap(ms);
      return bitmap;
    }

这是你的答案。从InkCanvas以所有格式另存为图像。如果需要将图像复制到剪贴板,则在将其保存到内存流后,必须从内存流创建位图并将其复制到剪贴板,如下所示:
var img=bitmap.FromStream(ms);剪贴板.SetDataObject(img)