最近使用vb.net自带的图表对象,想把图表存储为emf矢量图,chart对象提供了SaveImage方法,可以存储为磁盘文件,SaveImage(imageFileName As String, format As ChartImageFormat),然后复制文件,粘贴到word里,但是直接将emf文件保存在内存中然后放入剪贴板更合适,但使用存储为内存数据的重载方法时提示GDI+出现一般性错误。
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
With Chart1
With .Series(0)
.ChartType = DataVisualization.Charting.SeriesChartType.Line
.Points.DataBindXY({1.0R, 5.0R}, {7.0R, 9.0R})
End With
Dim x As New IO.MemoryStream()
.SaveImage(x, DataVisualization.Charting.ChartImageFormat.Emf)
Dim emf = New Imaging.Metafile(x)

这篇博客介绍了如何在vb.net中将图表对象保存为EMF矢量图并复制到剪贴板。在尝试直接使用Chart对象的SaveImage方法时遇到GDI+错误,问题在于需要从保存到MemoryStream的有效数据部分重新创建新的MemoryStream。博主通过调用API成功将Metafile放入剪贴板,并提到了在高DPI环境下确保图表正确绘制的方法。
最低0.47元/天 解锁文章
1182

被折叠的 条评论
为什么被折叠?



