AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

DoubleBuffered funktioniert nicht

Ein Thema von PierreB · begonnen am 31. Jan 2005 · letzter Beitrag vom 4. Feb 2005
Antwort Antwort
PierreB
(Gast)

n/a Beiträge
 
#1

DoubleBuffered funktioniert nicht

  Alt 31. Jan 2005, 21:03
Moin Moin,

ich habe verschiebe in meinem Programm ein Label (Laufschrift) jedoch flimmert es stark beim Verschieben. Also hab ich versucht das Problem mit
Code:
Form1.doublebuffered := True;
zu lösen. Mein Delphi 3 jedoch sagt 'Unbekannter Bezeichner DoubleBuffered'. Was is da los? Gibs noch ne andere Möglichkeit ?
Vielen Dank,
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#2

Re: DoubleBuffered funktioniert nicht

  Alt 31. Jan 2005, 21:11
Hi,

Delphi 3 kennt DoubleBuffered leider noch nicht
Thomas
  Mit Zitat antworten Zitat
PierreB
(Gast)

n/a Beiträge
 
#3

Re: DoubleBuffered funktioniert nicht

  Alt 31. Jan 2005, 21:12
Zitat von toms:
Hi,

Delphi 3 kennt DoubleBuffered leider noch nicht
Das ist aber sehr schlecht.
Gibs da net noch ne andere Methode denn wenn das Label so flackert sieht es in meinem Spiel echt dämlich aus...
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#4

Re: DoubleBuffered funktioniert nicht

  Alt 1. Feb 2005, 05:57
Hi,

Du könntest das WM_PAINT Deiner Labels umbiegen und dann selber erst auf ein Bitmap (CreateCompatibleBitmap) zeichnen und das dann mit BitBlt darstellen, so wie es die VCL macht.

Wenn Du magst, kann ich Dir teile des entsprechenden Codes der Vcl mal per PN schicken (falls das erlaubt ist...)

mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#5

Re: DoubleBuffered funktioniert nicht

  Alt 1. Feb 2005, 06:56
Zitat von mirage228:
Wenn Du magst, kann ich Dir teile des entsprechenden Codes der Vcl mal per PN schicken (falls das erlaubt ist...)
Nachdem er die D3 Pro hat, und dort AFAIR auch die VCL-Sourcen dabei sind dürfte das kein Problem sein, ich bin mir aber nicht 100%ig sicher...

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#6

Re: DoubleBuffered funktioniert nicht

  Alt 1. Feb 2005, 06:59
sofort nach dem Label.Caption := 'xyz'; ein Label.Update; aufrufen.

Gruß Hagen
  Mit Zitat antworten Zitat
PierreB
(Gast)

n/a Beiträge
 
#7

Re: DoubleBuffered funktioniert nicht

  Alt 1. Feb 2005, 16:31
Zitat von negaH:
sofort nach dem Label.Caption := 'xyz'; ein Label.Update; aufrufen.

Gruß Hagen
Nein, funzt leider net.
Ich hab zwei Labels dir wie "von Geisterhand" geschrieben werden sollen. Also das erste Label fängt an, wenn der String dann vollständig da ist, fängt das Label2 an. Beim Label1 ist alles ok, nur das zweite flackert dann heftig. Kann einer helfen ? Hier mal der Source:
Code:
var
i,h : integer;
procedure form1.timer1timer (Sender: TObject);
const
anfang = 'Herzlich Willkommen bei EliteHacker ! Unsere Firma sucht stets nach neuen Mitarbeitern!';
anfang1 = 'Bitte erstellen Sie ein neues Konto oder laden Sie ihren Spielstand. Viel Spass!';
begin
i := i + 1;
if i < 83 then
label1.caption := label1.caption + anfang[i];
if label1.caption = 'Herzlich Willkommen bei EliteHacker ! Unsere Firma sucht stets nach neuen Mitarbeitern!' then begin
h := h + 1;
if h < 86 then
label2.caption := label2.caption + anfang[h];
end
end;
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#8

Re: DoubleBuffered funktioniert nicht

  Alt 2. Feb 2005, 08:09
Dann nimm unter Delphi3 eine TPaintBox statt der Labels. Die Texte in eigene Strings und mit PaintBox.OnPaint() direkt in deinem Timer neugezeichnet. Im .OnPaint Event deiner Paintbox nun diese Strings mit DrawText(Canvas.Handle, ...) zeichnen. Dabei ist es wichtig das du NUR ZU BESTIMMTEN Zeitpunkten vorher mit Canvas.FillRect() den Text löschst. Achso: vor dem Zeichnen mit DrawText() noch SetBkMode(Canvas.Handle, TRANSPARENT); aufrufen.

Könnte alsoso aussehen:

Delphi-Quellcode:
type
  TForm1 = class(TForm)
    PaintBox1: TPainBox;
    PaintBox2: TPainBox;

  private
    FLabel1, FLabel2: String;
    
    procedure PaintBox1Paint(Sender: TObject);
    procedure PaintBox2Paint(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  protected
    procedure DoPaintBoxPaint(Sender: TObject; const Text: String; Erase: Boolean);


  end;

procedure TForm1.DoPaintBoxPaint(Sender: TObject; const Text: String; Erase: Boolean);
var
  R: TRect;
begin
  with (Sender as TPaintBox), Canvas do
  begin
    R := ClientRect;
    if Erase then FillRect(R);
    SetBkMode(Handle, Transparent);
    DrawText(Handle, PChar(Text), Length(Text), @R, dt_Left or dt_SingleLine or dt_VCenter);
  end;
end;

procedure TForm1.PaintBox1Paint(Sender: TObject);
begin
  DoPaintBoxPaint(Sender, FLabel1, True);
end;

procedure TForm1.PaintBox2Paint(Sender: TObject);
begin
  DoPaintBoxPaint(Sender, FLabel2, True);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  FLabel1 := FLabel1 + ....;
  DoPaintBoxPaint(PaintBox1, FLabel1, False);
  if Bumsda then
    DoPaintBoxPaint(PaintBox2, FLabel2, False);
end;
Gruß Hagen
  Mit Zitat antworten Zitat
PierreB
(Gast)

n/a Beiträge
 
#9

Re: DoubleBuffered funktioniert nicht

  Alt 4. Feb 2005, 13:44
OK, vielen Dank erstmal.
  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 20:09 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