【问题标题】:How to save a WPF chart toolkit as image in the clipboard?如何将 WPF 图表工具包保存为剪贴板中的图像?
【发布时间】:2019-05-08 02:43:14
【问题描述】:

我已经在使用 Windows 表单图表,并且可以使用以下代码将图表控件保存在剪贴板中:

    Dim stream As New System.IO.MemoryStream()
    SummaryChart.SaveImage(stream, System.Drawing.Imaging.ImageFormat.Bmp)
    Dim bmp As New System.Drawing.Bitmap(stream)
    Clipboard.SetDataObject(bmp)

但由于需求发生了变化,我不得不使用 WPF 图表工具包在视图中创建图表:

xmlns:dv="clr-namespace:System.Windows.Controls.DataVisualization;assembly=System.Windows.Controls.DataVisualization.Toolkit"

SummaryChart.SaveImage 不再起作用。 做我以前做的最好的方法是什么?

我已经阅读了这篇文章:Get a bitmap image from a Control view 并尝试了这些代码:

 Dim rtb = New RenderTargetBitmap(CInt(SummariesChart.ActualWidth), 
 CInt(SummariesChart.ActualHeight), 96, 96, PixelFormats.Pbgra32)
 rtb.Render(SummariesChart)
 Dim png  = New PngBitmapEncoder()
 png.Frames.Add(BitmapFrame.Create(rtb))
 Dim stream  = New MemoryStream()
 png.Save(stream)
 Clipboard.SetImage(rtb)

但是,它仍然不起作用。有人可以帮帮我吗?

谢谢。

【问题讨论】:

    标签: wpf vb.net wpftoolkit


    【解决方案1】:

    如以下代码所示保存 WPF 图表工具包图像。在Encoder.Frames中添加BitMapFrame,然后保存图片。

    Public Shared Sub SaveAsImage(ByVal element As FrameworkElement, ByVal filepath As String, ByVal width As Integer, ByVal height As Integer)
    element.Width = width
    element.Height = height
    element.Measure(New Size(width, height))
    element.Arrange(New Rect(0, 0, width, height))
    element.UpdateLayout()
    Dim target = New RenderTargetBitmap(width, height, 96, 96, System.Windows.Media.PixelFormats.Pbgra32)
    target.Render(element)
    Dim encoder = New PngBitmapEncoder()
    Dim outputFrame = BitmapFrame.Create(target)
    encoder.Frames.Add(outputFrame)
    
    Using file = File.OpenWrite(filepath)
        encoder.Save(file)
    End Using End Sub
    

    【讨论】:

    • 我使用了编码器,例如 Dim png = New PngBitmapEncoder()。另外,我没有传递文件路径。我想将它保存在剪贴板中。你知道我该怎么做吗?
    • 见我上面的代码。使用 system.drawing.image 将其复制到流中,然后使用剪贴板将其发送给它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-05
    • 1970-01-01
    相关资源
    最近更新 更多