【问题标题】:WPF: programatically draw a Rectangle to an ImageSource instanceWPF:以编程方式将 Rectangle 绘制到 ImageSource 实例
【发布时间】:2017-02-21 00:37:58
【问题描述】:

我是 C# 和 WPF 的新手,我可能完全看错了。我有一个 JPEG 字节数组作为源。我无法改变这一点。我需要获取数组,执行一些计算并在 JPEG 区域中绘制矩形。然后我将其写入 Image XAML 控件。

我得到了 JPEG,我可以将其转换为 ImageSource 并将其显示为 ImageControl。我找不到从ImageSource 获取绘图上下文的方法。我使用ImageSourceConverter 读取JPEG 数组,这个类返回一个ImageSource 实例,呵呵!

ImageSource mImage = (ImageSource)mConverter.ConvertFrom(mImageBuffer);

ImageSource 没有绘图上下文属性。

似乎我需要的是DrawingImage,它派生自ImageSource,并具有绘图上下文属性。

如何使用DrawingImage 而不是ImageSource

我查看了ImageDrawing 类,它有一个ImageSource 属性。此类没有绘图上下文。

我目前正在研究 Visual 类,不胜感激。

编辑: 感谢@nefarious 为我指明了正确的方向。我以以下内容结束:

ImageSource mImage = (ImageSource)mConverter.ConvertFrom(mImageBuffer);

BitmapSource bImage = mImage as BitmapSource;

// Draw a Rectangle
DrawingVisual dVisual = new DrawingVisual();
using (DrawingContext dc = dVisual.RenderOpen())
{
    dc.DrawImage(bImage, new Rect(0, 0, bImage.PixelWidth, bImage.PixelHeight));
    dc.DrawRectangle(Brushes.Green, null, new Rect(20, 20, 150, 100));
}
RenderTargetBitmap targetBitmap = new RenderTargetBitmap(640,480,96,96, PixelFormats.Default);
targetBitmap.Render(dVisual);

WriteableBitmap wBitmap = new WriteableBitmap(targetBitmap);
image.Source = wBitmap;

【问题讨论】:

  • 有趣的是,您现在正在加载 ImageSource,尽管您坚持要加载 WinForms 位图。无论如何,您可能想看看WriteableBitmapEx
  • 我不记得想要 WinForms 位图。我从未使用过 WinForms?
  • 在两天前的上一个问题中,我试图告诉您不要使用 System.Drawing 命名空间中的类,因为它是 WinForms,但没有成功.我不得不编辑你错误接受的答案。
  • 我接受的答案要求我确保我知道我使用的是 wpf 类而不是 WinForms 类。我混合它们是因为我不知道哪个是哪个.. 我一直想要 wpf。
  • 这不是真的。在我编辑之前,它以“尝试使用 System.Drawing.Bitmap”结束,然后你接受了它。我告诉过你,这不是你在 WPF 中通常会做的事情,而且它可能会给遇到同样问题的其他新手提供不好的建议。

标签: c# wpf xaml


【解决方案1】:

您是否使用过 Visuals,我不知道它们的效率如何,但您似乎无法将源代码复制到 ImageSource 中并直接在其中绘制。

创建一个 DrawingVisual 并将 ImageSource 和 Rectangles 绘制到绘图视觉对象的绘图上下文中。

然后使用WriteableBitmap在图片中显示;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-30
    相关资源
    最近更新 更多