【发布时间】:2016-12-16 04:29:11
【问题描述】:
我需要将 C# 程序提供的图像处理为 Bitmap 对象。该处理在 C++ DLL 中执行,该 DLL 接收从位图创建的 GDI 对象 (HBITMAP) 的句柄,通过
Bitmap.GetHbitmap();
在 C# 和 DLL 之间传递的参数可以正常工作,并且 GDI 对象具有预期的特性。我可以在 DLL 中读取图像的像素。
无论如何,当我尝试通过 DLL 修改图像时,更改不会反映在 C# 应用程序中,就好像该图像是只读的一样。我怀疑必须执行一些操作才能从 GDI 对象转换回 Bitmap 实例,但我在 .NET API 中什么也没看到。
我知道LockBits/UnlockBits 机制,如果没有其他方法,我可能会使用它,但我目前的要求是只传递一个句柄。
有什么提示吗?
【问题讨论】:
-
也许您正在寻找
Image.FromHbitmap()? -
@VisualVincent 是的!这是我需要的,它有效。我猜你可以输入这个作为答案。
-
很高兴听到它成功了!