AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Canvas: Änderungen/Bewegungen zeichnen

Ein Thema von Scurra · begonnen am 26. Aug 2018 · letzter Beitrag vom 2. Jan 2020
Antwort Antwort
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Canvas: Änderungen/Bewegungen zeichnen

  Alt 27. Aug 2018, 19:32
So könnte das aussehen,
als Zip da das Gif zu gross ist..
Angehängte Dateien
Dateityp: zip Bildschirmaufnahme 2018-08-27 um 20.24.06.gif.zip (288,5 KB, 26x aufgerufen)
Fritz Westermann
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli
Online

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.358 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Canvas: Änderungen/Bewegungen zeichnen

  Alt 28. Aug 2018, 08:36
@scurra

Ich habe mal ein graphisches Framework gebaut, das nur zyklisch in ein Bitmap zeichnet und dieses auf den Bildschirm kopiert.
Damit baue ich Formulare auf, ähnlich VCL bzw. FMX.
Die Positionen der Controls speichere ich in der Datenschicht und ermittle darüber, über welchem Control die Maus sich befindet.

Hat ganz gut funktioniert und ging wirklich schnell (sogar ohne Grafikbeschleunigung etc).

Schau mal hier:
https://www.delphipraxis.net/175033-...-schlecht.html
Im letzten Beitrag ist eine Demo zum Testen.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Scurra

Registriert seit: 19. Jan 2015
81 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Canvas: Änderungen/Bewegungen zeichnen

  Alt 28. Aug 2018, 20:28
Danke noch einmal für den Input von euch. Ich werde versuchen, das beste daraus zu machen und gebe dann evtl. noch einmal Bescheid ob es geklappt hat. Kann allerdings noch etwas dauern, da das ein Freizeitprojekt (und just for fun) ist und ich durchschnittlich wahrscheinlich nur 1-2 Stunden pro Woche daran arbeite. Also nicht wundern, wenn ich erst einmal keine Rückmeldung gebe.

Die Implementierung von Fritzew sieht für mich gut aus, vor allem der Schritt, die Zeichenfläche noch einmal abzukapseln. Ob ich nun direkt eine Paintbox zeichne oder ein Bitmap verwende, weiß ich noch nicht genau. Im Moment sieht es für mich aber eher so aus, als wäre es leichter, eine Bitmap zu verwenden, vor allem, weil dort die Verwendung mehrerer Schichten möglich ist.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
10.055 Beiträge
 
Delphi 12 Athens
 
#4

AW: Canvas: Änderungen/Bewegungen zeichnen

  Alt 29. Aug 2018, 21:25
Ob ich nun direkt eine Paintbox zeichne oder ein Bitmap verwende, weiß ich noch nicht genau.
Du solltest in jedem Fall alles erst fertig in ein Bitmap zeichnen und dann in einem Rutsch dieses in die Paintbox kopieren. Ansonsten flackert es nur unnötig.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Scurra

Registriert seit: 19. Jan 2015
81 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Canvas: Änderungen/Bewegungen zeichnen

  Alt 1. Sep 2018, 11:39
Ich habe gestern und heute mal ein wenig herumgespielt. Da ich das graphics32-Package schon hatte, habe ich dieses verwendet (ich dachte bislang, dass das schon standardmäßig in Delphi enthalten ist ). Mit der TImage32-Komponente und den darin enthaltenen (Bitmap-)Layern klappt das bisher wunderbar. Das einzige, das ich etwas störend/umständlich finde, sind die runden Enden von Linien, die man mit der Methode LineTo auf die Bitmaps zeichnet. Ich habe hier im Forum schon eine Lösung dafür gefunden (https://www.delphipraxis.net/92808-t...ten-ecken.html), man muss aber extra jedes Mal die Winapi verwenden.

Ich habe gerade noch eine Frage: Was ich bei meiner Anforderung komplett vergessen habe, ist, dass man das Formular auch vergrößern und verkleinern kann. Wie würdet ihr in einem solchen Fall vorgehen? Im Moment mache ich es so, dass ich die TImage32-Komponente mit alClient über mein Radar-Panel setze. Die Maße der Bitmaps in den Layern müsste ich aber im OnResize auch ständig anpassen, was evtl. zu einem Flackern führen könnte, wenn man das Formular mit der Maus groß/klein zieht (das OnResize-Event wird dann oft ausgelöst).
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli
Online

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.358 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Canvas: Änderungen/Bewegungen zeichnen

  Alt 1. Sep 2018, 14:54
In meinem Projekt berechne ich das Bitmap in einem Thread. Für die Berechnung wird die Zielgröße ClientRect des Formulars mitgegeben.
Wenn die Berechnung fertig ist, wird das Bitmap synchronisiert auf den Formularcanvas kopiert.

Sofern zwischenzeitlich die Formulargröße verändert wurde (ist ja flüssig möglich, da die Bitmap-Berechnung in einem Thread läuft) passt der Inhalt nicht zur Formulargröße. Es gibt einen Rand oder es wird etwas abgeschnitten.
Es wird aber sofort eine Neuberechnung ausgelöst, so dass der Inhalt an die neue Größe angepasst wird. Man erhält also einen Nachlaufeffekt, bis die Bitmapgröße zur Formulargröße passt.
Flackern tut da aber nichts.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Canvas: Änderungen/Bewegungen zeichnen

  Alt 1. Sep 2018, 15:12
man muss aber extra jedes Mal die Winapi verwenden.
Du kannst das aber auch einmal in einer Funktion kapseln und dann die statt der WinAPI verwenden
oder besser noch es per Class-Helper als dein eigenes LineToIrgendwas an TCanvas hängen.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Jens01

Registriert seit: 14. Apr 2009
674 Beiträge
 
#8

AW: Canvas: Änderungen/Bewegungen zeichnen

  Alt 1. Sep 2018, 17:51
Zitat:
Das einzige, das ich etwas störend/umständlich finde, sind die runden Enden von Linien, die man mit der Methode LineTo auf die Bitmaps zeichnet.
Das hier solltest Du Dir angucken:
http://angusj.com/delphi/gr32_lines.php

Es ist zwar schon veraltet aber gut...
Achtung: Bin kein Informatiker sondern komme vom Bau.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz