Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi bild anzeigen (https://www.delphipraxis.net/202363-bild-anzeigen.html)

Dubino 25. Okt 2019 15:24

bild anzeigen
 
was funktioniert hier nicht:

createwindow('STATIC','winpicting',ws_popup, 150, 150, 600,400,
0,0,0,Nil);{}
showwindow(hwnd01,sw_show);
updatewindow(hwnd01);

bmpname:='z01.bmp'
bmp:=LoadBitmap(hwnd01,bmpname);
PaintStrc.hdc:=hwnd01;
PaintStrc.ferase:=false;
PaintStrc.rcpaint.left:=0;
PaintStrc.rcpaint.top:=0;
PaintStrc.rcpaint.right:=600-1;
PaintStrc.rcpaint.bottom:=400-1;
hdcWindow:= BeginPaint(hwnd01,PaintStrc);

hdcMemory:= CreateCompatibleDC(hdcWindow);
SelectObject(hdcMemory, bmp);
BitBlt(hdcWindow, 150, 150, 600,400, hdcMemory, 0, 0, SRCcopy);
DeleteDC(hdcMemory);
EndPaint(hwnd01,PaintStrc);

showwindow(hwnd01,sw_show);
updatewindow(hwnd01);

hoika 25. Okt 2019 15:28

AW: bild anzeigen
 
Hallo,
ist das jetzt ein Ratespiel?
Was genau klappt denn nicht?

2 Sachen sind mir aufgefallen:

Ein Label (Static) kann Bilder anzeigen?

SelectObject(hdcMemory, bmp);
SelectObject liefert das alte Objekt zurück, dass sollte nach der Zeichenaktion auch wieder zurück "selected" werden.


Und warum machst alles über das WinAPI?

Dubino 25. Okt 2019 15:57

AW: bild anzeigen
 
zum beispiel sehe ich nur ein blankes fenster?
muss ich noch was anderes ausser api lernen?
wird es nicht angezeigt wenn ich es nicht zurückmelde?

hhcm 25. Okt 2019 16:09

AW: bild anzeigen
 
Zitat:

Zitat von Dubino (Beitrag 1450275)
was funktioniert hier nicht:

Die Frage sollte lauten. "Was soll das werden?"

hoika 25. Okt 2019 16:21

AW: bild anzeigen
 
Hallo,
Zitat:

wird es nicht angezeigt wenn ich es nicht zurückmelde?
Das erzeugt Ressourcen-Leck.

Das BeginPaint kommt eigentlich ins WM_PAINT,
siehe auch hier

https://docs.microsoft.com/en-us/win...ing-the-window

Ausserdem verdrehst du glaube ich das PaintStrc

hdcWindow:= BeginPaint(hwnd01,&PaintStrc);
Jetzt PaintStruct füllen.

Hier steht (etwas weiter unten), dass BeginPaint nur bei WM_PAINT benutzt werden kann

https://www.delphipraxis.net/168366-...dnisfrage.html

Luckie 25. Okt 2019 17:15

AW: bild anzeigen
 
Wo kommt denn hwnd01 her?

Dubino 26. Okt 2019 12:20

AW: bild anzeigen
 
hwnd01:=createwindow( Parameter1=?,


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:36 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz