Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Canvas Text löschen (https://www.delphipraxis.net/12070-canvas-text-loeschen.html)

steppo 19. Nov 2003 23:41


Canvas Text löschen
 
Hi Leute,

habe einen Text mit canvas.Textout auf dem Desktop ausgegeben.
Wie lösche ich diesen wieder?

Luckie 20. Nov 2003 01:38

Re: Canvas Text löschen
 
Übermalen oder Desktop mit InvalidateRect aktualisieren.

steppo 20. Nov 2003 21:56

Re: Canvas Text löschen
 
Hi Lucky,

Was meinst du mit übermalen?
InvalidateRect verusacht ein flackern!

ATwardz 20. Nov 2003 22:05

Re: Canvas Text löschen
 
Hi,

bei meinem Paintprogramm habe ich das so angestellt, das ich mir die vollgeschriebene Stelle(bemahlte gespeichert habe und diese nachher wieder hergestellt habe!
So wie Luckie das mit übermahlen meinte!
Meiner Meinung nach ist das die schnellste und effektivste Variante!
Ich habe die bei der zeichnung eines Kreises benutzt um einen Kreis zu zeichnen , der Vorher schon die Grösse angibt, wie es in MSPaint auch der Fall ist!

ATwardz

steppo 20. Nov 2003 22:19

Re: Canvas Text löschen
 
ich habe jetzt den gleichen Text in einer anderen schrift farbe überschrieben.
das problem ist nur,das der Hintergrund natürlich auch überschrieben wird, und so textteile fehlen!

himitsu 20. Nov 2003 22:40

Re: Canvas Text löschen
 
Wenn du etwas schreiben und dann wieder löschen willst, ohne den Hintergrund zu zerstören, musst du anders zeichnen/schreiben.

Delphi-Quellcode:
Canvas.Brush.Style := bsClear; {kein Hintergrund beim schreiben}
Canvas.Pen.Mode := pmNotXor;

Canvas.TextOut(X, Y, 'Text');  {Text schreiben}


Canvas.TextOut(X, Y, 'Text');  {Text wieder löschen}

Beispiele für PenMode (müsste der letzte Post auf der 1. Seite sein - von mir)

steppo 20. Nov 2003 23:11

Re: Canvas Text löschen
 
Funktioniert nicht bei mir.
Woran liegt es?

Delphi-Quellcode:
unit Main;

interface

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

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    Label1: TLabel;
    OpenDialog1: TOpenDialog;
    procedure Timer1Timer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    //    procedure FormPaint(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  Nachricht: string;
  Canv: TCanvas;
implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
begin

  Timer1.Enabled := not Timer1.Enabled;

  case Timer1.Enabled of
    True:
      begin
        Canv.Font.Color := clBlack;

        //Position zur Ausgabe der Schrift
        Canv.textout(Screen.Width div 2 - Canv.TextWidth(Nachricht) div 2,
          Screen.Height div 2 - Canv.TextHeight(Nachricht) div 2, Nachricht);

        Application.ProcessMessages;

        sleep(1000);
      end;
    False:
      begin
        Application.ProcessMessages;

        Canv.Font.Color := clWhite;

        //Position zur Ausgabe der Schrift
        Canv.textout(Screen.Width div 2 - Canv.TextWidth(Nachricht) div 2,
          Screen.Height div 2 - Canv.TextHeight(Nachricht) div 2, Nachricht);

        Refresh;

        sleep(1000);
      end;
  end;
  Timer1Timer(Self);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Canv := TCanvas.create;
  Canv.handle := GetWindowDC(0);
  OpenDialog1.Execute;
  Nachricht := ExtractFileName(OpenDialog1.FileName);
  with canv do
  begin
    font.name := 'Arial';
    font.size := 24;
    brush.style := bsclear;
    Pen.Mode := pmNot;
  end;
  Timer1.Enabled := True;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  Canv.Free;
end;

end.

himitsu 20. Nov 2003 23:52

Re: Canvas Text löschen
 
Sehe ich das richtig:

die Schrift soll doch zentriert blinken?

steppo 21. Nov 2003 00:02

Re: Canvas Text löschen
 
ja das ist richtig!

OLLI_T 21. Nov 2003 00:11

Re: Canvas Text löschen
 
HY!

Hast Du Dir eigentlich irgendetwas bei Deiner ultrakrassen OnTimer Methode gedacht oder hast Du das Artefakt einfach nur vorbehaltlos irgendwo rausgeschnipselt???? TsTsTs

Gruss

OLLI


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:24 Uhr.
Seite 1 von 4  1 23     Letzte »    

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