AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Image Flackert, wenn Cursor nicht über Formular.
Thema durchsuchen
Ansicht
Themen-Optionen

Image Flackert, wenn Cursor nicht über Formular.

Ein Thema von Cyberbob · begonnen am 21. Aug 2006 · letzter Beitrag vom 22. Aug 2006
Antwort Antwort
Benutzerbild von Cyberbob
Cyberbob

Registriert seit: 24. Jan 2005
Ort: Karben
626 Beiträge
 
Delphi XE7 Architect
 
#1

Image Flackert, wenn Cursor nicht über Formular.

  Alt 21. Aug 2006, 03:17
Hallo, noch ein Problem in meinem Programm.

Ich entwickle grad meinen MediaPlayer weiter, mein Problem nun, wenn der Mauscursor nicht über einem der Formulare meines Programmes liegt, Flackert die PaintBox auf dem Formular.
Die PaintBox wird über einen Timer sändig aktuallisiert um die FFT- oder die Wavedaten anzuzeigen.

Schonmal danke für alle Antworten.
Christian
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Image Flackert, wenn Cursor nicht über Formular.

  Alt 21. Aug 2006, 03:31
Zeichnes du den Inhalt der Paintbox immer komplett neu?

Zeichen auf ein Bitmap im Speicher und kopiere es bei bedarf auf den Canvas der Paintbox. Das ist wesentlich performanter und das flackern sollte nicht auftreten.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Cyberbob
Cyberbob

Registriert seit: 24. Jan 2005
Ort: Karben
626 Beiträge
 
Delphi XE7 Architect
 
#3

Re: Image Flackert, wenn Cursor nicht über Formular.

  Alt 21. Aug 2006, 04:43
Ich zeichne per

Delphi-Quellcode:
PaintBox.MoveTo(0, Height div 2);
For i := 1 To 255 do
  PaintBox.LineTo(i, FFTData[i]);
DoubleBuffered ist auch aktiv!
Christian
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Image Flackert, wenn Cursor nicht über Formular.

  Alt 21. Aug 2006, 07:21
Du machst genau das was Luckie vermutetet hat. Bei jeder Aktion die du ausführst auf die Canvas wird die Ausgabe aktuallisiert was das Flackern verursacht. Machs so:
Delphi-Quellcode:
var lBmp: TBitmap;
begin
  lBmp := TBitmap.Create;
  try
    //Alle Aktionen auf eine Canvas/Bitmap im Speicher ausführen
    lBmp.SetSize(PaintBox.Width, PaintBox.Height);
    lBmp.Canvas.MoveTo(0, Height div 2);
    For i := 1 To 255 do
      lBmp.Canvas.LineTo(i, FFTData[i]);
    //Und jetzt das Bitmap mit einem Rutsch auf die Canvas kopieren
    BitBlt(PaintBox.Canvas.Handle, 0, 0, lBmp.Width, lBmp.Height, lBmp.Canvas.Handle, 0, 0, SRCCOPY);
  finally
    lBmp.Free;
  end;
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Cyberbob
Cyberbob

Registriert seit: 24. Jan 2005
Ort: Karben
626 Beiträge
 
Delphi XE7 Architect
 
#5

Re: Image Flackert, wenn Cursor nicht über Formular.

  Alt 21. Aug 2006, 23:19
Mein Delphi meckert bei dem Befehl SetSize! Hab ich vergessen, irgendwelche Units einzubinden.
Christian
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#6

Re: Image Flackert, wenn Cursor nicht über Formular.

  Alt 21. Aug 2006, 23:23
Zitat von Cyberbob:
Mein Delphi meckert bei dem Befehl SetSize! Hab ich vergessen, irgendwelche Units einzubinden.
SetSize ist eien Mehtode von TBitmap! D.h. wenn bei TBitmap nicht gemeckert wird, fehlt auch die Unit nicht (in dem Fall die Unit Graphics). Also vermutlich ein Fehler in deinem Code ohn e selbigen kann ich dir den aber auch nicht sagen...

  Mit Zitat antworten Zitat
Benutzerbild von Cyberbob
Cyberbob

Registriert seit: 24. Jan 2005
Ort: Karben
626 Beiträge
 
Delphi XE7 Architect
 
#7

Re: Image Flackert, wenn Cursor nicht über Formular.

  Alt 21. Aug 2006, 23:34
Habs jetzt mit:
Delphi-Quellcode:
lBmp.Width := frmFFT.PaintBox.Width;
lBmp.Height := frmFFT.PaintBox.Height;
bemacht, musste aber Feststellen, das das Flackern nur noch schlimmer wurde. Jetzt ist es sogar nicht mehr flüssig, wenn der mauszeiger über dem formular ist.
muss mir wohl doch nochmal das mit den threads anschauen.

Gruss
Christian
Christian
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Image Flackert, wenn Cursor nicht über Formular.

  Alt 22. Aug 2006, 00:42
Zitat von SirThornberry:
Du machst genau das was Luckie vermutetet hat. Bei jeder Aktion die du ausführst auf die Canvas wird die Ausgabe aktuallisiert was das Flackern verursacht. Machs so:
Delphi-Quellcode:

    //Und jetzt das Bitmap mit einem Rutsch auf die Canvas kopieren
    BitBlt(PaintBox.Canvas.Handle, 0, 0, lBmp.Width, lBmp.Height, lBmp.Canvas.Handle, 0, 0, SRCCOPY);
Das gehört natürlich nicht an diese Stelle in den Code, sondern da wo es gezeichnet werden soll, also in der Timer Methode und / oder im OnPaint Ereignis.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
pacman1986

Registriert seit: 11. Feb 2005
Ort: Kirchhain
498 Beiträge
 
Delphi 2005 Personal
 
#9

Re: Image Flackert, wenn Cursor nicht über Formular.

  Alt 22. Aug 2006, 00:48
ich würde das bitmap im oncreat createn und im onclose freen und das die ganze zeit benutzen das spart auch zeit und ist meiner Meinung nach auch sauberer.
Christian N.
Designed to make a difference

najjaronline.de
  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 04:43 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