2014-07-08 15 views
6

Mam plik m matlab, który kreśli jakąś funkcję. Używając programu Matlab, utworzyłem projekt złożenia sieci i na koniec mam bibliotekę DLL do pracy. Mam aplikację WinForm utworzoną w Visual Studio przy użyciu C#, i wzywam mój dll (generowane w Matlab) z mojej aplikacji. W końcu dostaję wykres w nowym oknie (polecenie figure w programie matlab). Na przykład, wygląda na to: http://i.stack.imgur.com/cbq5Z.pngjak wykreślić postać Matlaba wewnątrz aplikacji WinForm?

Czy jest możliwe aby osadzić postać Matlab do mojego winform app?

http://i.stack.imgur.com/S9V9s.png Zapisywanie obrazu w programie MATLAB i ładuje go do PictureBox w winform nie jest dobrym rozwiązaniem, ponieważ muszę działać figurę (zoom, obracanie w 3d).

Odpowiedz

4

Matlab plots directly inside c++ GUI

To jest to, czego potrzebujesz. Musisz zaimportować metodę FindWindow() z User32.dll. Zwraca wskaźnik do okna, którego nazwa przekazujesz jako drugi argument. Po uzyskaniu wskaźnika musisz ustawić jego rodzica, używając metody SetParent(), którą możesz pobrać z User32.dll. Aby uzyskać wskaźnik do formularza, należy this.Handle:

IntPtr foundWindow = FindWindow("SunAwtFrame", "Figure 1"); //I belive, this shall give you a pointer to your Matlab window 
SetParent(foundWindow, this.Handle); 

I można zarządzać pozycję foundWindow i rozmiaru korzystając SetWindowPos() i() SetWindowLong (import tych z User32.dll).

+0

Doskonale! Dziękuję Ci! – sagamor

+0

@Denver, Czy ten kod wymaga zainstalowania oprogramowania MATLAB na moim komputerze? –