![]() |
Canvas Text löschen
Hi Leute,
habe einen Text mit canvas.Textout auf dem Desktop ausgegeben. Wie lösche ich diesen wieder? |
Re: Canvas Text löschen
Übermalen oder Desktop mit InvalidateRect aktualisieren.
|
Re: Canvas Text löschen
Hi Lucky,
Was meinst du mit übermalen? InvalidateRect verusacht ein flackern! |
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 |
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! |
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} ![]() |
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. |
Re: Canvas Text löschen
Sehe ich das richtig:
die Schrift soll doch zentriert blinken? |
Re: Canvas Text löschen
ja das ist richtig!
|
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 07:41 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz