【问题标题】:How to create an image of a WPF UserControl at runtime如何在运行时创建 WPF UserControl 的图像
【发布时间】:2011-03-23 10:29:34
【问题描述】:

我创建了一个 WPF 应用程序,它有一个 Canvas,我在其上放置了 UserControls,用户可以移动和调整其大小(就像 Windows 窗口一样)。现在我发现这在旧 PC 上可能会非常慢,这是一个问题。

作为一种解决方案,我考虑生成一个显示 UserControl 的图形,并在调整大小/拖动控件时显示它,以防止 WPF 永久重新计算所有元素。唯一的问题是我不知道如何生成这个图像。

在.Net 中是否有类似功能的东西?或者我怎么能自己做到这一点?

【问题讨论】:

标签: c# wpf optimization user-controls wpf-controls


【解决方案1】:

您可以使用RenderTargetBitmap 将 WPF 控件呈现为位图,然后可以将此图像复制到剪贴板、保存到文件或用作 GUI 的一部分

查看Get a bitmap image from a Control view

请注意,当您尝试渲染的控件部分不可见时(可能在滚动查看器中),您可能会遇到问题

【讨论】:

  • 如何包含整个控件,而不仅仅是当前显示的内容?
【解决方案2】:

WPF 应用程序确实需要一些相当严重的咕噜声;尤其是在图形部门,并从系统中存在体面的视频卡中受益匪浅。即便如此,WPF 应用程序的性能(如果不仔细构建)可能还有很多不足之处......

也就是说,您可以使用 FixedDocument 来光栅化 UserControl,然后将其转换为 GIF/JPG/PNG 并用它代替正在调整大小的控件...但是我希望该过程本身是比您当前观察到的性能问题慢或慢。

【讨论】:

  • 嗯,我查看了 FixedDocument,但根据 Microsoft 的说法,它为用户提供只读访问权限。我也需要写。
  • 如果您的应用程序需要在旧硬件上运行,我真的认为您需要为您的应用程序考虑 Windows 窗体。或者,您可以简化 UI,或者进行一些分析以查看前端的热点在哪里。
  • 好吧,这不是一个选择;-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-06
  • 1970-01-01
  • 1970-01-01
  • 2012-08-06
相关资源
最近更新 更多