016
17.02.2006, 00:12 Uhr
Spacelord
Hoffnungsloser Fall
|
Hi, mit welcher Windowsversion arbeitest du?Welche Version von VC++ ? Hast du das aktuelle Plattform SDK installiert? Vorausgesetzt dass du das aktuelle Plattform SDK installiert hast und VC++ die Pfade zum SDK bekannt sind ist deine IDE schon bereit zum durchstarten. Die zum "Betrieb" nötige Gdiplus.dll ist fester Bestandteil von XP.Für andere Windowsversionen gibt es Redistributables.
Jetzt mal ne kleine Anleitung wie du nen Bild mit GDI+ zeichnest.
Als erstes musst du den Header gdiplus.h einbinden (am besten in stdafx.h) und den Linker anweisen die gdiplus.lib mitzulinken.
Jetzt fügst du deiner Anwendungsklasse 2 Attribute hinzu.Der Einfachheit zuliebe einfach public.
C++: |
CDeineApp:public CWinApp { ...... public: Gdiplus::GdiplusStartupInput startInput; ULONG_PTR token; ....... };
|
Zu beachten ist dass das Ganze GDI+ Gelumpe in seinem eigenen Namensraum liegt und deshalb damit qualifiziert werden muss(oder halt using Direktiven nutzen).
Jetzt must du in der WinApp Klasse noch die Funktionen GdiplusStartup und GdiplusShutdown unterbringen um GDI+ beim Start zu initialisieren und am Ende wieder aufzuräumen.In ner MFC Anwendung bieten sich da InitInstance und ExitInstance an. Also:
C++: |
BOOL CDeineApp::InitInstance() { ..... Gdiplus::GdiplusStartup(&token,&startInput,NULL); CDeinDlg blablub; ...... }
int CDeineApp::ExitInstance() { Gdiplus::GdiplusShutdown(token); return CWinApp::ExitInstance(); }
|
Das war es an Vorbereitungen. Jetzt legst du in deinem Dialog nen CStatic als Zeichenfläche an,gibst dem Teil die Id IDC_BILD und legst im Klassenassistenten ne Controlvariable(vom Typ CStatic) c_Bild dafür an. Und an der Stelle wo du dann meinst dass das Bild auf das Static Feld gezeichnet werden soll fügst du dann,im einfachsten Fall, folgenden Code ein:
C++: |
Gdiplus::Image image(L"DeinBild.tiff"); Gdiplus::Graphics g((c_Bild.GetDC())->m_hDC); g.DrawImage(&image,Gdiplus::Point(0,0));
|
Das ist dann wie gesagt der einfachste Fall und da die Variablen image und g lokal sind ist dein Image beim nächsten neuzeichnen wieder weg aber das ist dann schonmal nen Grundgerüst mit dem du experimentieren kannst. Im Normalfall wirst du sicherlich in der Dialogklasse Variablen für Graphics und Image anlegen und diese im Konstruktor initialisieren(Image::FromFile,Graphics::FromHWND etc.).
Unterm Strich würde ich meinen Arsch darauf verwetten dass Image intern auch IPicture nutzt..... .
MfG Spacelord -- .....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes. Dieser Post wurde am 17.02.2006 um 00:19 Uhr von Spacelord editiert. |