Autor Beitrag
Tweafis
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 647

WinXP + fbsd
Delphi 5 Prof
BeitragVerfasst: Mo 02.06.03 18:44 
Wenn ich eine komponente progge und diese von allein nicht flimmern soll, wie mach ich das dann? Es geht zwar wenn Form1.Doublebuffered := true aber die Komponente soll von allein nicht flimmern.

In den Speicher schreiben funzt auch net:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
  DBuffer := TBitmap.Create;
  DBuffer.Width := Width;
  DBuffer.Height := Height;

  with DBuffer do begin
    if StdZeiger.Visible then begin
      Canvas.Pen.Assign(StdZeiger.Pen);
      Line(Canvas, Middle, StdHandEnd);
    end;
    if MinZeiger.Visible then begin
      Canvas.Pen.Assign(MinZeiger.Pen);
      Line(Canvas, Middle, MinHandEnd);
    end;
    if SekZeiger.Visible then begin
      Canvas.Pen.Assign(SekZeiger.Pen);
      Line(Canvas, Middle, SekHandEnd);
    end;
  end;

  DBuffer.Transparent := True;
  Canvas.Draw(0,0,DBuffer);
  DBuffer.free;


Flimmert afais nur noch mehr.

Thx, Fis

_________________
.: Es wird der Tag kommen, an dem wir es nicht mehr ändern können :.
tommie-lie
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 4373

Ubuntu 7.10 "Gutsy Gibbon"

BeitragVerfasst: Mo 02.06.03 20:02 
flimmert noch mehr?
komisch...
Als letzte Instanz könntest du noch BitBlt statt Draw probieren, und zwar so:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
// [...]
  DBuffer.Transparent := True;
  BitBlt(Canvas.Handle, 0, 0, Width, Height, DBuffer.Handle, 0, 0, SRCCOPY);
// [...]


edit: und wenn du den Code da in einer Schleife ausführst, solltest du vor der Schleife DBuffer Createn und die Maße einstellen, dann das ganze Zeichnen erledigen, bis die Schleife zu Ende ist und nach der Schleife DBuffer wieder freigeben. Wenn du z.B. ganz oft was zeichnen musst, erzeugst du DBuffer im FormCreate, zeichnest dann 'ne Weile und im FormDestroy gibst du DBuffer erst wieder frei.

_________________
Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk. - Dilbert


Zuletzt bearbeitet von tommie-lie am Mo 02.06.03 20:08, insgesamt 1-mal bearbeitet
Tweafis Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 647

WinXP + fbsd
Delphi 5 Prof
BeitragVerfasst: Mo 02.06.03 20:04 
Jetzt zeigt er garnix mehr an...
ausblenden Delphi-Quelltext
1:
2:
//  Canvas.Draw(0,0,DBuffer);
  BitBlt(Canvas.Handle, 0, 0, Width, Height, DBuffer.Handle, 0, 0, SRCCOPY);


// das mit dem flimmert noch mehr kam mir nur so vor, ich habe keinerlei beleg für die tatache...

_________________
.: Es wird der Tag kommen, an dem wir es nicht mehr ändern können :.