vb.net 将图表对象的矢量图复制到剪贴板

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近使用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)    '出错
        End With

    End Sub

折腾半天发现原因很简单,SaveImage(imageStream As Stream, format As ChartImageFormat)方法存储的MemoryStream比实际要大,需要把

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值