Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

AW: PaintBox in ScrollBox nach JPG

  Alt 7. Mär 2014, 11:26
OK, die Scrollbalken könnte man ausblenden, nach dem Screenshot abschneiden, oder den Screenshotbereich einschränken, so das Balken die da nicht drauf sind.


Das Andere geht natürlich garnicht.

Eine PaintBox ist nur für die Ausgabe .... sie speichert keine Bilddaten.

Heißt: Alles was nicht sichtbar ist, da gibt es es kein Bild.



PS: Bevor Windows anfing über den DesktopWindowsManager die Fenster zwischenzuspeichern, damit er die transparenten (Aero) besser/schneller berechnen kann, da reichte es schon, mal schnell ein anderes fenster vor der Paintbox langzuziehen, oder das Startmenü aufzumachen .... schon war das Bild weg.



Lösung: Mach es richtig, nutzte die PaintBox nur zur Darstellung und verwalte dein Bild intern in einem Bitmap, welches im OnPaint und bei Änderungen auf die PintBox gemalt wird.

Oder verwende ein TImage mit einem Bitmap drin.

Oder zeichne alles doppelt (Lösung 1, aber eventuell etwas schneller) => auf die PaintBox und in ein TBitMap ... das TBitMap wird für's OnPaint verwendet, um die fehlenden stellen neu zu zeichnen.

Oder merk dir was alles gezeichnet wird, während es auf der PaintBox landet. Im OnPaint werden die Zeichenbefehle dann erneut ausgeführt, genauso wie für deine Kopie.





Und warum im Himmels Willen verwendest du INTERN ein TImage?

Ein TImage ist nur für die Ausgabe.

Intern verwendet man entweder direkt das gewünschte Grafikformat, samt der passenden Variable,
oder man nimmt ein TGraphic und legt darin eine Instanz des benötigten Formates an.
Man könnte magimal nich TPicture verwenden, wenn man sich nicht um das Format kümmern will. (TPicture ist das, was auch das TImage intern verwendet)


In Deinem Fall hätte man das Bild entweder direkt auf das Canvas des TJpegImage malen können, oder du hättest eben nochmal ein TBitmap drumrummachen können.
(das TBitmap nimmst du eh schon, allerdings umständlich verpackt in dem TImage, da es das Standardformat ist, wenn TPicture nichts Anderes vorgesetzt bekommt)
$2B or not $2B

Geändert von himitsu ( 7. Mär 2014 um 11:35 Uhr)
  Mit Zitat antworten Zitat