jpg anzeigen
-
Hi ich habe in einem Dialog ein Pictrurecontrol und diesen eine Membervariable zugewissen. Nun lade ich ein JPG Datei verändere die größe und würde es gerne anzeigen leider passiert das nicht was mache ich falsch ? Wenn ich das neue JPG mit save speichere erscheint es im Verzeichnis mit der neuen größe...
CImage image,img2 ; CString tFile = _T("image/") +pFile; image.Load(tFile); int h=image.GetHeight(); int w=image.GetWidth(); int tnh=100; int tnw=100*w/h; int bpp=image.GetBPP(); img2.Create(tnw,tnh,bpp); HDC h2=img2.GetDC(); SetStretchBltMode(h2,HALFTONE); image.StretchBlt(h2,0,0,tnw,tnh,SRCCOPY); m_PictureCtl.SetBitmap((HBITMAP)img2); img2.ReleaseDC();mfg
-
Fehlt da ein Neuanzeigen? Schieb mal ein anderes Fenster drüber und dann wieder weg.
-
ach jetzt gehts...
img2.ReleaseDC();musste vor
m_PictureCtl.SetBitmap(img2);thx
-
irgendwie hab ich wirklich noch ein Problem mit dem neuzeichnen....sobald das Fenster mal im Hintergrund war und wieder in den Vordergrund kommt ist das Bildchen weg. Wie kann man das problem lösen?
lg
-
Hast Du noch andere Controls in dem Dialog die sich überlappen.
Dafür sind diese Controls nicht gebaut. Du müsstest dann WS_CLIPCHILDREN verwenden.Andere Frage: Malst Du auch in Deinem Dialog den Dialog Hintergrund?
-
nein das tue ich nicht.
ich hab in den Dialog noch ne ComboBox und nen ListCtrl.
Die Überlappensich aber nicht. Je nachdem was ich der ComboBox auswähle
soll halt ein anderes Bildchen angezeigt werden.
-
also ich hab jetzt mal die onpaint von meinem Dialog überschrieben und folgendes gemacht.
1 Versuch :m_PictureCtl.SetBitmap( m_PictureCtl.GetBitmap());...das hatte nichts gebracht, dass Bild blieb verschwunden.
Dann hab ich das Bild noch mal komplett aus den File geladen und
mit setBitmap gesetzt wie oben in dem Codestückchen...
dann hatte es funktionert
Allerdings denke ich mal, dass es bestimmt eine eleganteren Weg für das
Neuzeichenen diese "Picture Controls" gibt.?!
lG
-
Hallo,
das CImage wird doch zerstört, wenn es nur eine lokale Variable ist wie hier:
CImage image,img2 ;zu vermuten ist. Damit das nicht passiert, sollte es eine Membervariable des Dialogs sein.
MfG,
-
Ok danke ,
das war der Fehler. Ich dachte dieses setBitmap legt sich selber dann eine kopie an. War wohl nicht so
thx
-
mir ist aufgefallen, dass manche Bilder oben und unten leicht abgeschnitten werden. an was könnte das liegen?
lG