我进行了搜索和搜索,但未能找到与我相同问题的任何内容。我正在尝试渲染WPF应用程序的一些高分辨率/ dpi屏幕截图。唯一的问题是我需要在渲染中包含图表工具提示中的信息,除此之外我可以保存截图。
我目前正在使用Infragistics XamDataChart,我在代码而不是xaml中生成工具提示。
任何人都知道如何在可视树中获取工具提示以便呈现?或者能够渲染整个窗口及其内部的所有内容,包括工具提示叠加?
渲染代码:
public static void RenderVisualToFile(this FrameworkElement visual)
{
var width = (int)visual.RenderSize.Width;
var height = (int)visual.RenderSize.Height;
RenderTargetBitmap renderTarget = new RenderTargetBitmap(width * 4, height * 4, 384, 384, PixelFormats.Pbgra32);
renderTarget.Render(visual);
// Encode and save to PNG file
var enc = new PngBitmapEncoder();
enc.Frames.Add(BitmapFrame.Create(renderTarget));
if (Directory.Exists("Screenshots"))
{
using (var stm = File.Create(@"Screenshots\Render_" + DateTime.Now.ToString("yyMMMdd_HHmmss") + ".png"))
enc.Save(stm);
}
else
{
Directory.CreateDirectory("Screenshots");
using (var stm = File.Create(@"Screenshots\Render_" + DateTime.Now.ToString("yyMMMdd_HHmmss") + ".png"))
enc.Save(stm);
}
}
我在后面的MainWindow代码中调用它。
if (e.Key == Key.PrintScreen)
{
this.RenderVisualToFile();
}
答案 0 :(得分:1)
有点晚了但也许有人可以使用我的解决方案。
我的屏幕截图类基于以下解决方案:
我使用元组来返回多个参数C# 7.0 Tuples。
所以这是我的班级:
def create_storage_profile
storage_profile = StorageProfile.new
storage_profile.image_reference = get_image_reference
storage = create_storage_account
os_disk = OSDisk.new
os_disk.caching = 'None'
os_disk.create_option = 'fromImage'
os_disk.name = 'Test'
virtual_hard_disk = VirtualHardDisk.new
virtual_hard_disk.uri = generate_os_vhd_uri storage.name
os_disk.vhd = virtual_hard_disk
storage_profile.os_disk = os_disk
storage_profile
end