2017-09-13 51 views
0

我需要复制的图表(System.Windows.Forms.DataVisualization.Charting.Chart),以便将其粘贴到其他应用程序剪贴板。我使用下面的代码,但它给最后一行“img”说错误“类型位图的值不能转换为Bitmapsource”副本windowsform图表到剪贴板VB

任何帮助纠正错误是高度赞赏。

Private Sub CopyChartBtn_Click(sender As Object, e As RoutedEventArgs) Handles CopyChartBtn.Click 

    Dim main = DirectCast(Application.Current.MainWindow, MainWindow) 
    Dim SET_H = DirectCast(main.Frame1.Content, SET_Home) 
    Dim chart1 = DirectCast(SET_H.Benchchart.Child, System.Windows.Forms.DataVisualization.Charting.Chart) 

    'save image 
    Dim img As New System.Drawing.Bitmap(chart1.Width, chart1.Height) 
    Dim gr As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(img) 
    chart1.Printing.PrintPaint(gr, New System.Drawing.Rectangle(System.Drawing.Point.Empty, chart1.Size)) 
    Clipboard.SetImage(img) 

End Sub 

我的项目是WPF和我主持windowsform图表中它。也许这就是问题所在,因为当我在Windows窗体项目中运行它时,它工作正常

+0

我们的代码工作的好时候,检查项目的.NET Framework版本 – snoopcommands

+0

@snoopcommands我使用.NET 4.5.2 – Manochehr

+0

我检查,它很努力好的,你的代码复制了图表,我可以将它粘贴到mspaint,然后检查你导入的命名空间。我什么也没做,创建了一个新项目,放了一个图表,并在那里粘贴了你的代码。 – snoopcommands

回答

0

我使用了System.Windows.Forms.Clipboard.SetImage(img),它工作正常。当它是一个WPF项目时,它使用System .Windows.Clipboard.SetImage(IMG)没有使用命名空间