Thema: Delphi Canvas Text löschen

Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.154 Beiträge
 
Delphi 12 Athens
 
#23

Re: Canvas Text löschen

  Alt 23. Nov 2003, 22:40
Und weiter geht's auf http://www.FrankNStein.de/Smiley-Wolke.gif,

wenn der Text nur kurz angezeigt werden soll, kannst du es ja auch so machen:
Delphi-Quellcode:
  Procedure TForm1.Timer1Timer(Sender: TObject);
    Begin
      (* Text zeichnen *) 
      Font.Color := clBlack;
      Canv.TextOut(Screen.Width div 2 - Canv.TextWidth(Nachricht) div 2,
        Screen.Height div 2 - Canv.TextHeight(Nachricht) div 2, Nachricht);
      Sleep(1);
      Application.ProcessMessage;
      (* Text löschen *) 
      Font.Color := clWhite;
      Canv.TextOut(Screen.Width div 2 - Canv.TextWidth(Nachricht) div 2,
        Screen.Height div 2 - Canv.TextHeight(Nachricht) div 2, Nachricht);
    End;
Kannst ja mit verschieden Varianten spielen:
Code:
        [color=gray]Screen.Height [b]div[/b] 2 - Canv.TextHeight(Nachricht) [b]div[/b] 2, Nachricht);[/color]
      Sleep(1);
      [color=gray](* Text löschen *)[/color]
Code:
        [color=gray]Screen.Height [b]div[/b] 2 - Canv.TextHeight(Nachricht) [b]div[/b] 2, Nachricht);[/color]
      Application.ProcessMessage;
      [color=gray](* Text löschen *)[/color]
Code:
        [color=gray]Screen.Height [b]div[/b] 2 - Canv.TextHeight(Nachricht) [b]div[/b] 2, Nachricht);[/color]
      Sleep(1);
      Application.ProcessMessage;
      [color=gray](* Text löschen *)[/color]
PS: Die Anzeigedauer (Sleep) mß kleiner als das Anzeigeintervall (Timer1.Interval) sein.




Delphi-Quellcode:
Unit Unit1;

Interface
  Uses Windows, Messages, SysUtils, Variants, Classes,
    Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls;

  Type TForm1 = Class(TForm)
    Timer1: TTimer;
    OpenDialog1: TOpenDialog;
    Procedure FormCreate(Sender: TObject);
    Procedure FormDestroy(Sender: TObject);
    Procedure Timer1Timer(Sender: TObject);
  End;

  Var Form1: TForm1;
    Nachricht: String;
    Canv: TCanvas;

Implementation
  {$R *.dfm}

  Procedure TForm1.FormCreate(Sender: TObject);
    Begin
      Canv := TCanvas.Create;
      Canv.Handle := GetWindowDC(WindowHandle);
      OpenDialog1.Execute;
      Nachricht := ExtractFileName(OpenDialog1.FileName);
      With Canv do Begin
        Font.Name := 'Arial';
        Font.Size := 24;
        Brush.Style := bsClear;
      End;
      {Timer1.Interval := Anzeigeintervall;}
      {Timer1.Tag := 0;}
      {Timer1.Enabled := True;}
    End;

  Procedure TForm1.FormDestroy(Sender: TObject);
    Begin
      Canv.Free;
    End;

  Procedure TForm1.Timer1Timer(Sender: TObject);
    Begin
      (* Text zeichnen *) 
      Font.Color := clBlack;
      Canv.TextOut(Screen.Width div 2 - Canv.TextWidth(Nachricht) div 2,
        Screen.Height div 2 - Canv.TextHeight(Nachricht) div 2, Nachricht);
      Sleep(1);
      (* Text löschen *) 
      Font.Color := clWhite;
      Canv.TextOut(Screen.Width div 2 - Canv.TextWidth(Nachricht) div 2,
        Screen.Height div 2 - Canv.TextHeight(Nachricht) div 2, Nachricht);
    End;

End.

http://www.FrankNStein.de/Smiley-Kuss.gif * * http://www.FrankNStein.de/Smiley-Spinne.gif * * * http://www.FrankNStein.de/Smiley-Winken.gif
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat