WPF包含Render中的工具提示和RenderTargetBitmap

时间:2016-02-10 09:39:05

标签: wpf tooltip infragistics rendertargetbitmap xamdatachart

我进行了搜索和搜索,但未能找到与我相同问题的任何内容。我正在尝试渲染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();
    }

1 个答案:

答案 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