我有一个matlab m文件,它绘制了一些函数。使用matlab,我创建了网络组装项目,最后我得到了一个dll可以使用。我有一个使用c#在visual studio中创建的winform应用程序,我从我的应用程序调用我的dll(在matlab中生成)。最后我在新窗口中得到一个图形(matlab中的图形命令)。 例如,它看起来像:
是否有可能将matlab图形嵌入我的winform应用程序中?
在matlab中保存图片并将其加载到winform中的图片框不是一个好的解决方案,因为我需要操作图形(缩放,在3d中旋转)。
答案 0 :(得分:3)
Matlab plots directly inside c++ GUI
这就是你需要的。您必须从User32.dll导入FindWindow()方法。它返回一个指向窗口的指针,您将该名称作为第二个参数传递。获得指针后,您必须使用SetParent()方法设置它的父级,您可以从User32.dll获取该方法。为了获得指向表单的指针,请使用this.Handle:
IntPtr foundWindow = FindWindow("SunAwtFrame", "Figure 1"); //I belive, this shall give you a pointer to your Matlab window
SetParent(foundWindow, this.Handle);
您可以使用SetWindowPos()和SetWindowLong()管理foundWindow的位置和大小(从User32.dll导入这些)。