AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Flimmern beim zeichnen

Flimmern beim zeichnen

Ein Thema von Mjöllner · begonnen am 24. Nov 2006 · letzter Beitrag vom 1. Dez 2006
Antwort Antwort
Seite 1 von 2  1 2   
Mjöllner

Registriert seit: 18. Nov 2006
Ort: Berlin
12 Beiträge
 
Delphi 7 Enterprise
 
#1

Flimmern beim zeichnen

  Alt 24. Nov 2006, 07:24
Hallo erst mal
ich arbeite in der Schule gerade an einem Projekt zum darstellen von 3D-Objekten.
Es ist komplett Vektor-basierend.

Jedenfalls kommt es beim zeichnen immer wieder zu starken flackern.

Ich hab doublebuffered auf true gesetzt.
Ich zeichne erst auf ein TImage und setze das dann direkt aufs Form.

Ich weiß nicht,warum es trotzdem flackert. ICh zeichne bei meinem Beispielobjekt etwa 530 Punkte. Daran sollte es aber denke ich nicht liegen.
Ich vermute, ich hab die diese Offset screen methode einfach noch nich vertanden

Der Quelltext ist beigefügt.

Danke für die Hilfe,
mfg
Mjöllner
Angehängte Dateien
Dateityp: rar d3-anzeige_112.rar (187,0 KB, 20x aufgerufen)
Wissen ist Macht, Unwissen Ohnmacht.
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Flimmern beim zeichnen

  Alt 24. Nov 2006, 08:35
wenn du selbst schon mit offscreen-bitmap arbeitest, kann DoubleBuffered eher schaden als nützen.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Mjöllner

Registriert seit: 18. Nov 2006
Ort: Berlin
12 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Flimmern beim zeichnen

  Alt 24. Nov 2006, 08:50
habs auch ohne getestet, bringt keine verbesserung
Wissen ist Macht, Unwissen Ohnmacht.
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#4

Re: Flimmern beim zeichnen

  Alt 24. Nov 2006, 10:56
Wozu zeichnest du noch auf ein TImage anstatt es auf ein TBitmap zu zeichnen?
  Mit Zitat antworten Zitat
Mjöllner

Registriert seit: 18. Nov 2006
Ort: Berlin
12 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Flimmern beim zeichnen

  Alt 24. Nov 2006, 12:14
ich denke genau da liegt das Problem.
ich wusste nicht, wie ich dem Formular diese Bitmap überhelfen kann.

Ich habs bloß so gesehen:
Form.Canvas.Draw(0,0,Graphic) wobei Graphic vom Typ TGraphic sein muss.
Wenns anders geht, würd ich mich freuen!
Wissen ist Macht, Unwissen Ohnmacht.
  Mit Zitat antworten Zitat
Benutzerbild von Aenogym
Aenogym

Registriert seit: 7. Mär 2004
Ort: Schwerin
1.089 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Flimmern beim zeichnen

  Alt 24. Nov 2006, 12:59
Zitat von Mjöllner:
Wenns anders geht, würd ich mich freuen!
Delphi-Quellcode:
  BitBlt(Form1.Canvas.Handle, 0, 0, Form1.ClientWidth, Form1.ClientHeight,
         SourceCanvas.Handle, 0, 0, SRCCOPY);
Steffen Rieke
Was nicht buzzt, wird buzzend gemacht!
http://blog.base-records.de
http://www.base-records.de
  Mit Zitat antworten Zitat
kolbaschedder

Registriert seit: 24. Aug 2006
Ort: Schwäbisch Gmünd
55 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Flimmern beim zeichnen

  Alt 24. Nov 2006, 13:13
Das Flimmern kommt daher, dass Windows immer zuerst den Hintergrund zeichnet, der dann wieder übermalt wird.

Ich würde das ganze auf ein Panel zeichnen.

in der FormCreate folgende zeile einfügen.

panel1.controlstyle := panel1.controlstyle +[csOpaque]; Diese Zeile bewirkt, dass windows den Hintergrund nicht neu zeichnet.

Das Kopieren des Bitmap auf das Panel erfolgt dann in der

Panel1.onPaint;

neu zeichnen nie durch den direkten Aufruf von onPaint erzwingen, sondern

panel1.invalidate;

aufrufen.
  Mit Zitat antworten Zitat
kolbaschedder

Registriert seit: 24. Aug 2006
Ort: Schwäbisch Gmünd
55 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Flimmern beim zeichnen

  Alt 24. Nov 2006, 13:26
Ok, ich hab mal dein Programm runtergeladen. Es reicht völlig, wenn du den direkten aufruf von

zeichnen;

durch

invalidate;

ersetzt. (ausser natürlich in der FormPaint() )
  Mit Zitat antworten Zitat
Mjöllner

Registriert seit: 18. Nov 2006
Ort: Berlin
12 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Flimmern beim zeichnen

  Alt 24. Nov 2006, 13:39
nett das du nochmal was geschrieben hast, ich bin nämlich gerade daran gescheitert, dieses Panel in meni Programm einzufügen

Mit dem invalidate ist schon viel getan! Es laufen zwar immer noch graue Balken durchs Bild, aber es sieht schon besser aus. Jetzt werd ich mich mal darum kümmern, das restliche Programm effektiver zu gestalten, dann siehts bestimmt auch wieder besser aus!


Vielen dank erst mal an alle, die geholfen haben!
Wissen ist Macht, Unwissen Ohnmacht.
  Mit Zitat antworten Zitat
kolbaschedder

Registriert seit: 24. Aug 2006
Ort: Schwäbisch Gmünd
55 Beiträge
 
Delphi 2006 Professional
 
#10

Re: Flimmern beim zeichnen

  Alt 24. Nov 2006, 15:07
Bei mir läuft es absolut flimmerfrei. Schau mal nach, ob du alle aufrufe deiner Zeichnen-Routine durch "Invalidate" ersetzt hast.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 09:32 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