目前我有第三方控件生成一个图元文件。我可以将.wmf文件保存到磁盘上,但无法解决问题。问题是如何将Metafile呈现为Tiff文件。VB.net将MetaFile/EMF保存为位图(.tiff)
目前我有下面的代码来获取我的图元文件并保存它。
Dim mf As Metafile = page.GetImage(TXTextControl.Page.PageContent.All)
Dim enhMetafileHandle As IntPtr = mf.GetHenhmetafile()
Dim h As IntPtr
Dim bufferSize As UInteger = GetEnhMetaFileBits(enhMetafileHandle, 0, h)
Dim buffer(CInt(bufferSize)) As Byte
GetEnhMetaFileBits(enhMetafileHandle, bufferSize, buffer)
Dim msMetafileStream As New MemoryStream
msMetafileStream.Write(buffer, 0, CInt(bufferSize))
Dim baMetafileData() As Byte
baMetafileData = msMetafileStream.ToArray
Dim g As Graphics = Graphics.FromImage(mf)
mf.Dispose()
File.WriteAllBytes("c:\a.wmf", baMetafileData)
端子
_ 公共共享功能GetEnhMetaFileBits(BYVAL HEMF作为System.IntPtr,BYVAL n大小作为UInteger,BYVAL的lpData作为IntPtr的)作为UInteger 结束函数
<System.Runtime.InteropServices.DllImportAttribute("gdi32.dll", EntryPoint:="GetEnhMetaFileBits")> _
Public Shared Function GetEnhMetaFileBits(<System.Runtime.InteropServices.InAttribute()> ByVal hEMF As System.IntPtr, ByVal nSize As UInteger, ByVal lpData() As Byte) As UInteger
End Function
我已经尝试过各种图像和图形调用,并且无法将元文件保存为.tiff文件。任何建议都会很棒。我甚至试图创建一个新的位图并将图元文件绘制到它上面。我总是会抛出一个GDI异常。
这工作,我刚刚与DPI搞砸让我.TIFF是高质量的。 – pehaada 2010-03-28 16:41:09
元文件是可扩展的。使位图尽可能大,使用带有Rectangle的DrawImage重载。 – 2010-03-28 16:54:08