如何在运行时创建WPF UserControl的图像

8
我创建了一个WPF应用程序,其中有一个Canvas,我在上面放置了UserControls,用户可以移动和调整大小(就像Windows窗口)。现在我发现这在旧PC上可能非常慢,这是一个问题。
作为解决方案,我考虑生成一个图形来显示UserControl,并在调整大小/拖动控件时显示该图形,以防止WPF不断重新计算所有元素。唯一的问题是我不知道如何生成这个图像。
在.Net中是否有类似于此功能的函数?或者我该如何自己实现?

这个问题/答案也帮助了我:https://dev59.com/rkzSa4cB1Zd3GeqPqutK - Aaron Hoffman
2个回答

8
你可以使用RenderTargetBitmap将WPF控件渲染为位图,然后可以将此图像复制到剪贴板、保存到文件或用作GUI的一部分。
请查看从控件视图获取位图图像 但要注意,当您尝试呈现的控件的某些部分不可见时(例如在滚动查看器中),可能会遇到问题。

如何包含整个控件而不仅仅是当前显示的内容? - JeremyK

0

WPF应用程序确实需要一些相当严重的计算能力,特别是在图形方面,并且非常受益于系统中有一个体面的显卡。即使如此,如果没有仔细构建,WPF应用程序的性能也可能不尽人意...

话虽如此,您可以使用FixedDocument来光栅化UserControl,然后将其转换为GIF/JPG/PNG,并将其放置在调整大小的控件的位置...但是我预计该过程本身会比您当前观察到的性能问题更慢。


嗯,我看了一下 FixedDocument,但根据微软的说法,它只为用户提供只读访问权限。我也需要写入权限。 - Tokk
如果你的应用程序需要在旧硬件上运行,我真的认为你需要考虑使用Windows Forms。或者,你可以简化你的用户界面,或者进行一些分析以查看前端的热点在哪里。 - James Webster
那不是一个选项;-) - Tokk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接