最近在做一个C#项目时需要用到一个ActiveX控件,控件中使用的图片&字体对象分别为stdPicture&stdFont 和 Image、Font无法直接转换,后来在网上查了很多资料找到如下方法
[DllImport("oleaut32.dll", CharSet = CharSet.Unicode, PreserveSig =
true, EntryPoint = "OleLoadPictureFile")]
static extern void OleLoadPictureFile(Object varObj,[ MarshalAs(
UnmanagedType.IDispatch )] out Object oOut);
private void axGridControl1_OnDraw(object sender,
AxINAGRIDLib.IGridControlEvents_OnDrawEvent e)
{
System.String strFile;
strFile = "C:DevelInabyteInagridSamplesVSNetCSharpInaOwnerDrawicon.bmp";
Object lpDisp = null;
OleLoadPictureFile((Object) strFile, out lpDisp);
StdType.StdPicture pic = (StdType.StdPicture)lpDisp;
}
这种方法比较麻烦,我没有试过,有兴趣的网友可以试一下
在解决其它问题时发现了FrameWork中有个命名空间Microsoft.VisualBasic.Compatibility专门解决VB6的兼容性问题,经研究收获如下
Microsoft.VisualBasic.Compatibility.VB6.IPictureToImage()
Microsoft.VisualBasic.Compatibility.VB6.ImageToIPicture()
Microsoft.VisualBasic.Compatibility.VB6.IFontToFont()
Microsoft.VisualBasic.Compatibility.VB6.FontToIFont()
这个方法已经经过测试,可以使用