2013-06-20 70 views
0

我正在尝试将图像发送到atl com dll。在C#中,从C#发送图像到ATL COM DLL

System.Drawing.Imaging.BitmapData bmpdata = 
bmp1.LockBits(new System.Drawing.Rectangle(0,0,bmp1.Width, bmp1.Height), 
System.Drawing.Imaging.ImageLockMode.ReadWrite, bmp1.PixelFormat); 

而得到的BitmapData就这样的字节组,

bmpdata.Scan0; 

我怎么能在发送该位图数据到ATL COM DLL?我将使用传入的bytearray在com DLL中创建一个opencv cv :: mat。

谢谢。

回答

0

我猜自动化兼容的方式是将Marshal.Copy的内容转换为一个字节数组,并将它编组为字节的SAFEARRAY。

我不知道这是最简单的方法,但这是我能想到的第一个。如果你的接口不是自动兼容的,比如简单地将IntPtr作为字节指针和大小传递,那么可能还有其他方法。