下面是AE提供的可以轉化Font和Image分別為IFontDisp和IPictureDisp的函數,和我自己寫的將IFontDisp和IPictureDisp轉化為Font和Image的函數
ESRI.ArcGIS.ADF.COMSupport.OLE.GetIFontDispFromFont
ESRI.ArcGIS.ADF.COMSupport.OLE.GetIPictureDispFromBitmap
ESRI.ArcGIS.ADF.COMSupport.OLE.GetIPictureDispFromIcon
''' <summary>
''' 從IFontDisp轉換到System.Drawing.Font
''' </summary>
''' <param name="pFontDisp">傳入IFontDisp</param>
''' <returns>返回Font</returns>
''' <remarks></remarks>
Shared Function GetFontFromIFontDisp(ByVal pFontDisp As stdole.IFontDisp) As System.Drawing.Font
Dim pName As String
Dim pSize As Single
Dim pFontStyle As System.Drawing.FontStyle
Dim pFont As System.Drawing.Font
pName = pFontDisp.Name
pSize = pFontDisp.Size
If pFontDisp.Bold = True Then
pFontStyle = pFontStyle + System.Drawing.FontStyle.Bold
End If
If pFontDisp.Italic = True Then
pFontStyle = pFontStyle + System.Drawing.FontStyle.Italic
End If
If pFontDisp.Strikethrough = True Then
pFontStyle = pFontStyle + System.Drawing.FontStyle.Strikeout
End If
If pFontDisp.Underline = True Then
pFontStyle = pFontStyle + System.Drawing.FontStyle.Underline
End If
pFont = New System.Drawing.Font(pName, pSize, pFontStyle)
Return pFont
End Function
''' <summary>
''' 從IPictureDisp轉換到System.Drawing.Image
''' </summary>
''' <param name="pPictureDisp">傳入的IPictureDisp</param>
''' <returns>返回Image</returns>
''' <remarks></remarks>
Shared Function GetImageFormIPictureDisp(ByVal pPictureDisp As stdole.IPictureDisp) As System.Drawing.Image
Return System.Drawing.Image.FromHbitmap(New System.IntPtr(pPictureDisp.Handle))
End Function