Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Image mit GDI+

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 <
010
02.03.2006, 16:44 Uhr
mmc20
puss in boots


mh,... ist jetzt nen schuss ins blaue, so wie das klingt erwartet FromFile(..) keinen CString, sondern ein HANDLE ?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
02.03.2006, 22:06 Uhr
Spacelord
Hoffnungsloser Fall


Hallo,

Zitat von kleineSchildy:

Aber warum um Himmels Willen, sollte der Pfad ne Zahl sein???


Die Fehlermeldung ist in der Tat etwas unglücklich aber wchar_t ist unter VC++6 als unsigned short definiert.Der meckert also im Grunde dass er keine widechar Zeichenfolge bekommt.

Wenn du das Ganze über nen CString lösen willst dann musst du erstmal den Header atlconv.h einfügen.


C++:
#include <atlconv.h>
.....

//angenommen sPicture ist irgendwo als CString deklariert
USES_CONVERSION;
Gdiplus::Image* image;
image->FromFile(A2W(sPicture), FALSE);
Gdiplus::Graphics g((m_cPicture.GetDC())->m_hDC);
g.DrawImage(image,Gdiplus::Point(0,0));
...



Kannst das Ganze aber auch selber mit MultiByteToWideChar lösen aber A2W ist wohl einfacher .

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
03.03.2006, 09:37 Uhr
kleineSchildy



Hallo,

also meine Vorgehensweise scheint so nicht zu funktionieren


C++:
//Bild anzeigen
USES_CONVERSION;
Gdiplus::Image* image;
[b]image->FromFile(A2W(sPicture), TRUE);[/b]
Gdiplus::Graphics g((m_cPicture.GetDC())->m_hDC);
g.DrawImage(image,Gdiplus::Point(0,0));



Das Bild wird nicht geladen.


Code:

warning C4700: local variable 'image' used without having been initialized



Hat jemand ne Idee? Es kann doch nicht sein, dass alle Bilder immer fest einprogrammiert werden müssen.

Viele Grüße
Jana
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
03.03.2006, 09:49 Uhr
Spacelord
Hoffnungsloser Fall


Hi,wenn du den Image Zeiger in OnPaint deklarierst macht der ohnehin keinen Sinn,dann kannst du auch gleich wieder nen lokales Image Objekt nehmen.
Was spricht dagegen die Klasse zu nutzen die ich weiter vorne gepostet hatte?
Das mit dem CString müsste auf jeden Fall funktionieren.

Dein Problem ist dass du FromFile als Membermethode von image aufrufst.
Das muss aber ne Zuweisung sein! FromFile ist ne statische Methode die dir nen Zeiger auf nen gültiges Image Objekt liefert.

C++:
image = Gdiplus::Image::FromFile(A2W(sPicture),TRUE);



Das Löschen mit delete nicht vergessen.
Und den CDC wieder freigeben....dafür müsstest du dich mit deinem Code aber erstmal halbwegs an das Beispiel halten das ich gepostet hatte(oder die Klasse benutzen-die erledigt das alles automatisch für dich).

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
03.03.2006, 10:50 Uhr
Spacelord
Hoffnungsloser Fall


Um nicht die ganze Anwendung mit Konvertierungen vollzumüllen hab ich noch die Methode SetPicture mit CString überladen und nen Invalidate hinzugefügt damit das Bild sofort aktualisiert wird(und nicht erst bei der nächsten WM_PAINT).

CPictureStatic.cpp

C++:
#include <atlconv.h>

.....
void CPictureStatic::SetPicture(wchar_t* path,BOOL b)
{
    delete image;
    image = Gdiplus::Image::FromFile(path,b);
    Invalidate();
}

//natürlich auch im Header der Klasse deklarieren
void CPictureStatic::SetPicture(CString path,BOOL b)
{
    USES_CONVERSION;
    SetPicture(A2W(path),b);
}



MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
03.03.2006, 12:28 Uhr
kleineSchildy



Hallo Spacelord,

so, habe meine Code nochmal umgeschrieben und benutze deine Klasse :-) Ist ne feine Sache.

Ich habe nur ne Weile gebraucht, um mich reinzufitzen und alles in meinem Projekt entsprechende anzupassen.

Viele Grüße
Jana
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
03.03.2006, 12:31 Uhr
Spacelord
Hoffnungsloser Fall


Auf Dauer wirst du damit aber mehr Freude haben .

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: