AGB  ·  Datenschutz  ·  Impressum  







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

Rotation von Grafiken, Transparenz, Radar

Ein Thema von qduda · begonnen am 21. Aug 2011 · letzter Beitrag vom 29. Mär 2013
Antwort Antwort
qduda

Registriert seit: 15. Aug 2011
1 Beiträge
 
#1

Rotation von Grafiken, Transparenz, Radar

  Alt 21. Aug 2011, 18:02
Hallo Community,

kurz zu mir. Ich habe vor einigen Jahren mit Delphi gearbeitet, bin dann aber quasi komplett auf C++ .net bzw c# .net umgestiegen. Es war erstmal interssant zu sehen, dass Delphi jetzt nicht mehr zu Borland gehört...

Wie dem auch sei, ich habe folgendes Problem. Ich möchte auf einem VCL Formular eine Art "Radar" zeichnen. So etwas wie in diversen Filmen, ein Kreis in dem quasi eine Linie (radius) rotiert und dann so Punkte bei Ortung aufpoppen. Hintergrund ist eine kleine Idee von mir und ein Minispiel.
Ich hoffe ihr könnt euch vorstellen was ich meine und will.

So also jetzt habe ich zunächst mit den Standard Delphi Komponenten expiermentiert und musste feststellen, dass z.B. ein TImage nicht mal methoden zur Rotation vorgesehen hat. Hier auf dem Forum bin ich schnell fündig geworden --> Graphics32 (eine open source library) bietet erweitere "Grafikkomponenten", so enthält z.B. die Klasse TImage32 (aus der Graphics32 lib) Methoden zur Rotation und zur Transparenz. Nach etwas gefriemel und dem einen oder anderen Work-arround (Das mit den Transparenzen funktioniert nur halb-gar) musste ich dann feststellen, dass die Visualisierung zwar mit dieser Lib möglich ist, aber das ganze dann leider nicht performant genug ist. Es werden mehrere Grafiken übereinander gelegt, rotiert und Linien und Punkte eingemalt. Die Bitmaps werden quasi vor dem Neuzeichnen ge-cleared. Das sorgt dafür, dass es zu unerwünschtem "Blicken" der Zeichenfläche kommt, die Animation wirkt also alles andere als Homogen...

Einige Stunden später habe ich dann Kapituliert und musste einsehen, dass diese Library für meine Zwecke wohl nicht geignet ist. Einige Google Anfragen und durchgelesene Threads später schien mir DirectX bzw Direct2D die Lösung zu sein. Damit habe ich auch schon mit C++ gearbeitet. Jetzt musste ich feststellen dass es diverse Projekte (z.B. Project Jedi) gab die sich mit der Portierung der API Header auf Delphi beschäftigt hatten. Viele der Projecte gibt es nicht mehr. Somit gibt es auch keine aktuellen Header für z.B. DirectX10 oder 11 für Delphi. Auch habe ich Foren/Communitys gefunden, die sich quasi genau mit der Thematik DirectX für Delphi beschäftigten, diese sind aber irgendwie tot.
Folglich scheint mir DirectX auch nicht die Lösung zu sein die ich suche.

Was aber nun tun? Das Projekt verwerfen? Auf C++ ausweichen? Das würde ich ungern, denn meine Idee war ein altes Delphi Projekt von mir zu erweitern und dieses "Radar" einzubauen...

Stoße ich hier gerade an die Grenzen von Delphi? (Klar mit entsprechendem Aufwand kann ich mir die API Header auch selber portieren usw... Aber da ich die Sache hier in meiner Frezeit mache, und die iser leider begrenzt ).

Vielleicht übersehe ich etwas, und hier hat jemand einen guten Tipp für mich wie ich vorgehen kann. Gibt es evtl. Libs die für mich geeignet sind? Oder irgendwelche alternativen Technologien?

Danke euch für die Tipps im Vorraus!

Cheers,

Q
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Rotation von Grafiken, Transparenz, Radar

  Alt 21. Aug 2011, 18:11
Graphics32 ist eigentlich sehr performant (natürlich nicht so schnell wie hardwarebeschleunigte APIs wie OpenGL oder DirectX) und kann auch mit Transparenzen ordentlich umgehen. Keine Ahnung, was du machst...

Was das Geflicker beim Neuzeichnen angeht: Ich habe mit den visuellen Gr32-Komponenten lange nicht gearbeitet, weil ich nur Turbo Delphi 2006 habe, wo man keine Komponenten installieren kann, aber du könntest versuchen im FormCreate-Ereignis folgendes hinzuzufügen: MyImage32.ControlStyle := MyImage32.ControlStyle + [csOpaque]; . Wenn das nichts hilft, würde ich statt des TImage32 einfach eine stinknormale Paintbox sowie ein TBitmap32 nehmen, und im OnPaint-Ereignis das Bitmap auf die Paintbox zeichnen.

Geändert von Namenloser (22. Aug 2011 um 14:59 Uhr)
  Mit Zitat antworten Zitat
Jens01

Registriert seit: 14. Apr 2009
670 Beiträge
 
#3

AW: Rotation von Grafiken, Transparenz, Radar

  Alt 21. Aug 2011, 18:33
die GR32_lines ist eine gute Ergänzung zu Graphics32
http://angusj.com/delphi/

Guck Dir mal die Demos dazu an.
  Mit Zitat antworten Zitat
Benutzerbild von ehX
ehX

Registriert seit: 11. Aug 2011
Ort: Augsburg
55 Beiträge
 
Delphi 2009 Professional
 
#4

AW: Rotation von Grafiken, Transparenz, Radar

  Alt 21. Aug 2011, 21:24
Schau dir mal Andorra 2D oder GLScene an (zweiteres basiert auf OpenGL)....damit sollte ein Radar ohne Performance-Probleme zu schaffen sein.

Es liegt aber generell nicht am "Limit von Delphi", sondern wohl eher an deinem implementierten Algorithmus, warum es mit GR32 nicht richtig funzt.
Wie bereits gesagt, unterstützt GR32 Transparenz nicht halbgar, sondern ziemlich gut, und die Performance ist normalerweise auch sehr gut...
Von dem her: Hast du evtl. ein Code-Schnippsel von deinem Radar-Code? Dann kann man hier sicher gemeinschaftlich optimieren

Btw....bezüglich DirectX: Für ein Radar brauchst du ganz sicher keine Erweiterungen von DX10 oder DX11...und DX9-Header findest du sicher noch genug
Fin

Geändert von ehX (21. Aug 2011 um 21:40 Uhr)
  Mit Zitat antworten Zitat
terence14
(Gast)

n/a Beiträge
 
#5

AW: Rotation von Grafiken, Transparenz, Radar

  Alt 29. Mär 2013, 06:52
Um dem nervenden Flackern beizukommen, gerade wenn ein TTimer
Komponente mitwirkt, die Linien auf TImages bzw. TPaintBoxes schreibt,
bewährt sich im Form1.FormCreate() ein Form1.DoubleBuffered:=True;

MfG,
terence
  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 08:02 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