Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Hintergrundbild auf TBitmap während Laufzeit resizen (https://www.delphipraxis.net/165262-hintergrundbild-auf-tbitmap-waehrend-laufzeit-resizen.html)

Vukloc 20. Dez 2011 17:57

Hintergrundbild auf TBitmap während Laufzeit resizen
 
Hallo über die Feiertage vor mich weiter mit Delphi (7) zu befassen, und habe mir da mal was ausgedacht.

Eigentlich will ich mir ne Uhr "basteln", und hätte dafür ein schönes frei verfügbares Hintergrundbild hierauf müsste ich dann nur noch die Zeiger zeichnen (wollte das mit Sinus und Cosinus lösen).

Nun ist meine Frage bevor ich damit anfange, wie sieht dies beim resizen des Programmes während der Laufzeit aus? Ist es ohne größeren Aufwand möglich das Hintergrundbild während der Laufzeit zu resizen ?

Vielen dank für die Auskunft

Bummi 20. Dez 2011 18:05

AW: Hintergrundbild auf TBitmap während Laufzeit resizen
 
Ich würde Dir hierfür nichts persistentes sondern z.B. TPaintbox empfehlen, das Hintergrundbild kannst am einfachsten per StretchDraw "reinmalen".

Vukloc 20. Dez 2011 18:42

AW: Hintergrundbild auf TBitmap während Laufzeit resizen
 
Ok hört sich gut an, also das ganze wird dann nicht instanziert, sondern einfach nur mit LoadFromFile laden und PaintBox.Draw zeichen?
Hab ich das so richtig verstanden ?

Dann muss ich aber die Paintbox vor jeder "Zeigerbewegung" refresehen und das Hintergrundbild neu reinzeichnen oder ?

Bummi 20. Dez 2011 19:51

AW: Hintergrundbild auf TBitmap während Laufzeit resizen
 
Einmal ein TBitmap oder ähnliches erzeugen, intial einmalig die Datei laden, ab dann aus dem Bitmap arbeiten.
Das Neuzeichnen musst Du in beiden Fällen durchführen, einmal in Deinem Image, welches dann von der Komponente für Dich neu gemalt wird (wobei Du hier ja auch das Problem hast jedes mal das Hintergrundbild neu malen zu müssen, was allemal schneller ist als es jedes mal von der Platte zu laden).
Denkbar wäre auch ein TImage als Hintergundbild und eine Paintbox drüberlegen (wobei D7 wenn ich mich recht entsinne Center/Stretch/Proportional noch nicht kennt), da diese "transparent" ist sie überall "durchsichtig" wo Du nichts tust. Technisch passiert intern aber auch nichts anderes als dass die TImagekomponente das intern gespeicherte Bitmap in "ihrer Paintbox" neu malt und Du in Deiner Paintbox die Zeiger neu malst. Du könntest das Bild auch statt aus einer Datei aus eine Imagelist entnehmen.
Du kannst auch glich den ganzen Schritt machen und eine Komponente schreiben, abgeleitet von TGraphiccontrol mit Properties für Bitmap integriertem Timer, ein paar Einstellungen für das Aussehen etc.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:27 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