Thema: Delphi Problem mit Invalidate

Einzelnen Beitrag anzeigen

Benutzerbild von punker76
punker76

Registriert seit: 11. Jan 2004
Ort: Alsdorf
98 Beiträge
 
Delphi 7 Personal
 
#1

Problem mit Invalidate

  Alt 20. Jun 2006, 13:41
Hallo Ihrs

Ich habe ein kleines Problem, das mit einer Zeichenroutine zu tun hat.
Das ganze hat mit der Spectrum-Anzeige meines Players zu tun: Go

Die Anzeige bleibt einfach irgendwann stehen (friert ein), wenn ich wie folgt vorgehe:

Delphi-Quellcode:
...

procedure TMainForm.MainTimerEvent(Sender: TObject);
begin
  Spectrum.Draw;
end;

...

type
  TSpectrum = class (TPanel)
  ...
  end;

...

procedure TSpectrum.Draw;
begin
  // mach was: Zeichne in Buffer
  ...
  BitBlt(self.Canvas.Handle, 0, 0, FBuffer.Width, FBuffer.Height, FBuffer.Canvas.Handle, 0, 0, SRCCOPY);
end;

...
Wenn ich das ganze aber so mache, dann funktioniert alles Prima. Der einzige Nachteil ist, das die CPU Last ziemlich steigt (was man bei älteren CPU's merkt).

Delphi-Quellcode:
...

procedure TMainForm.MainTimerEvent(Sender: TObject);
begin
  Spectrum.Invalidate;
end;

...

type
  TSpectrum = class (TPanel)
  ...
  end;

...

procedure TSpectrum.Paint;
begin
  Draw;
end;

procedure TSpectrum.Draw;
begin
  // mach was: Zeichne in Buffer
  ...
  BitBlt(self.Canvas.Handle, 0, 0, FBuffer.Width, FBuffer.Height, FBuffer.Canvas.Handle, 0, 0, SRCCOPY);
end;

...
Weiss, denn einer Rat? Wird bei dem Invalidate noch irgendetwas anderes gemacht?

Danke

MFG
Miniaturansicht angehängter Grafiken
zwischenablage01_105.jpg  
Jan Karger
Punk's not dead!!!
  Mit Zitat antworten Zitat