从AxMSChart复制图象到剪贴板然后再导出图片,出现错误,代码如下: AxMSChart1.EditCopy() |
我猜测可能是mschart迁移到到.net之后出现的问题,单独用editcopy没问题,用画板可以读取内存里
的图片,用Clipboard.GetImage方法也没问题,但两者在一起就有问题,我估计可能editcopy方法独
占了剪贴板(我还是不相信)?亦或者editcopy线程不安全?具体到现在我也不太清楚,反正就不能简单共存
(以前VB里就这么用的)。
我也试着从网友介绍的用单线程、提升权限角度解决问题,但都没成功。既然我发现使用完
editcopy方法后用windows自带的画板能读取,就联想到我用api函数来读取clipboard行不行呢?经过
测试后,发现果然可以,我用vb.net的代码写的过程,大家可以参考一下:
声明: Private Const CF_BITMAP As Short = 2 Private Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Integer) As Integer Integer |
功能过程代码: Dim iBitmapPtr As Integer Dim iBitmap As System.Drawing.Bitmap Me.AxMSChart1.EditCopy() MessageBoxIcon.Error) Else Me.SaveFileDialog1.FileName = "" Me.SaveFileDialog1.Filter = "BMP文件(*.bmp)|*.bmp" Me.SaveFileDialog1.OverwritePrompt = True If Me.SaveFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then If System.IO.File.Exists(Me.SaveFileDialog1.FileName) = True Then System.IO.File.Delete(Me.SaveFileDialog1.FileName) End If iBitmap.Save(Me.SaveFileDialog1.FileName) End If End If CloseClipboard() |