Autor Beitrag
DelphiMan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 73



BeitragVerfasst: So 18.05.03 18:52 
Hallo zusammen,

ich benütze eine Paintbox ich möchte gerne jede sekunde einen ausschnitt der paintbox neuzeichnen (um eben bspw. die aktuelle sekunde graphisch darzustellen). dabei treten leider unerwünschte flicker-effekte auf, obwohl ich auch schon doublebuffered sowie invalidate gesetzt habe. Kennt jemand von euch vielleicht eine wirksame methode flickern bei neuzeichnen eines bereichs zu unterdrücken? Außerdem: wie kann man nur einen ausschnitt der paintbox neuzeichnen, ohne dabei das OnPaint-Eregnis auszulösen?
Vielen Dank im Voraus!

MfG
DelphiMan
Jack Falworth
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 222

Win XP Pro, Slackware 10.0
D5 Enterprise, C++, ABAP
BeitragVerfasst: So 18.05.03 19:28 
hI,

also erstmal das mit dem einen Teil neuzeichnen geht nicht. Immer nur die ganze Paintbox. Das Problem hatte ich auch mal.

Besser finde ich, wenn man ein Image benutzt, da wird das Neuzeichnen automatisch gemacht.
Um das Flickern zu verhindern, nimm einfach ne Scrollbox, dann setz ein Image mit derselben Größe in die Scrollbox und setz dann Scrollbox.Doublebuffered auf true. Funktioniert bei meinen Programmen wunderbar.

MfG

Jack Falworth

_________________
Andere zu kritisieren ist mitunter eine Möglichkeit, sich selbst ins bessere Licht zu setzen.
Kostja
Hält's aus hier
Beiträge: 11



BeitragVerfasst: So 18.05.03 19:36 
Ich hab das immer so gemacht, dass ich das gewünschte Bild zuerst in eine Bitmap gezeichnet hab und dann dieses Bitmap auf der Image Komponente mittels Draw dargestellt:

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:
23:
24:
25:
26:
27:
var Graph: TBitmap;

implementation

procedure Form1.Create;
begin
  Graph := TBitmap.Create;
end;


procedure Zeichen;
begin
With Graph.Canvas Do
      begin

      Pen.Color:=clBlack;
      Brush.Color:= clBlack;
      Rectangle(0,0,w,h);
      //Sleep(0);
      Pen.Color:=clYellow;
      Brush.Color:=clYellow;
      Rectangle(vnext,50,vnext+100,150);

      //Sleep(0);
      end;
Image1.Canvas.Draw(0,0,Graph);
end;


Moderiert von user profile icontommie-lie: Delphi-Tags hinzugefügt