Autor Beitrag
MrFox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 208

WIN 2000 Professional, Ubuntu 5.10
D3 Prof, D7 Pers, D2005 Pers, Java (Eclipse)
BeitragVerfasst: Do 29.12.05 12:45 
Hi Leute,

ich bin gerade dabei ein kleines Quasi-Vektorgrafik-Programm zu schreiben. Die einzelnen grafischen Objekte sind intern ebenfalls als Objekte (z.B TKurvenLinie) vereinbart und werden (gemäß ihren Eigenschaften) auf die Grafikoberfläche gezeichnet.

Momentan zeichne ich die ganze Sache auf eine PaintBox.
Jetzt wüsst ich gerne obs da eine bessere Komponente gibt und vor allem WANN ich zeichnen sollte.
Zeichne ich mit einem Timer (10ms), entsteht bei Objekten die übereinander liegen ein starkes Flimmern, was ich vermeiden will.

_________________
Das Leben auf der Erde mag zwar teuer sein, aber eine jährliche Rundreise um die Sonne ist gratis mit dabei.
Fabian W.
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1766

Win 7
D7 PE
BeitragVerfasst: Do 29.12.05 12:59 
Versuch mal Form1.doublebuffered := true;
Lossy eX
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1048
Erhaltene Danke: 4



BeitragVerfasst: Do 29.12.05 13:17 
Ist es so praktisch die ganze Form zu puffern, wenn doch nur in eine PaintBox gezeichnet werden soll? Ich finde nicht.

Bessere Komponente. Es kommt darauf an was du noch vor hast? Zum alleinigen Zeichnen reicht die Paintbox genügt die PaintBox vollkommen. Wenn du jetzt allerdings noch Tastatur und Mausereignisse haben möchtest, dann geräts du sehr schnell an die Grenzen einer PaintBox. Speziell bei Tastatur. Wenn ich komplette Tasturereignisse haben will, dann benutze ich meistens eine Ableitung von einem Panel in dem ich die notwendigen Sachen alle eingebaut habe. Da ein Panel aber schon selber viele besitzt sind das gar nicht mal viele.

Wann zeichnen. Schau mal bei der Paintbox. Die hat ein Event OnPaint. Wenn du in diesem Zeichnest bist du recht sicher. Dann fehlen noch die Ereigniss, wenn sich etwas verändert hat. Und das bekommst du in den MausEvents wenn du zum beispiel dinge verschoben hast oder etwas hinzugefügt hast. Dann würde ich einfach hergehen und PaintBox.Repaint aufrufen. Damit wird das OnPaint selbsttätig aufgerufen.

Flimmern. Solltest du später ein Panel benutzen wollen könntest du entweder dort DoubleBuffered setzen oder du Zeichnest den Inhalt in ein temporäres Bitmap. Was du selber erstellt hast. Wenn du mit dem Zeichnen fertig bist, dann zeichnest du das Bitmap auf die Paintbox. Nichts anderes geschiet intern bei DoubleBuffered. Nur das da das Bild bei jedem Zeichnen neu angelegt werden muss. Auch wenn das schnell geht könnte man darauf sicherlich verzichten.

_________________
Nur die Menschheit ist arrogant genug, um zu glauben sie sei die einzige intelligente Lebensform im All. Wo nicht mal das nachhaltig bewiesen wurde.
Kroko
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1284

W98 W2k WXP
Turbo D
BeitragVerfasst: Do 29.12.05 13:21 
und zeichne nur, wenn etwas neu ist oder
PaintBox.OnPaint aufgrufen wird!

//WDIT; Zu laaaangssaaaaaaaaaaaaam :wink:

_________________
Die F1-Taste steht nicht unter Naturschutz und darf somit regelmäßig und oft benutzt werden! oder Wer lesen kann, ist klar im Vorteil!
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Do 29.12.05 15:24 
Wenn Du umfangreichere Sachen in 2D\3D haben willst, kannst Du auch überlegen, in wie weit sich die Nutzung von OGL lohnen würde.

Dort wäre es auf jeden Fall erstmal flackerfrei, schnell und auch bei Kurven relativ einfach diese zu zeichnen ;-)

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
MrFox Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 208

WIN 2000 Professional, Ubuntu 5.10
D3 Prof, D7 Pers, D2005 Pers, Java (Eclipse)
BeitragVerfasst: Do 29.12.05 16:09 
Danke fü die vielen Antworten. Werd jetzt dann wohl einfach mal alles durchprobieren.
An OpenGL hatt ich auch schon gedacht, müsst ich mich allerdings erstmal damit beschäftigen, also eher ne Notlösung.

_________________
Das Leben auf der Erde mag zwar teuer sein, aber eine jährliche Rundreise um die Sonne ist gratis mit dabei.