![]() |
Delphi-Version: 5
Gemaltes aus einem Panel löschen
Guten Morgen,
Ich habe folgendes Problem: Ich male mit panel1.canvas Linien und so weiter auf mein Panel. Diese möchte ich durch einen Klick auf einen Button löschen, um danach wieder was neues zu malen. Wie erreiche ich das? panel1.clear geht zum Beispiel nicht. Vielen Dank schon mal für alle Antworten. |
AW: Gemaltes aus einem Panel löschen
Indem du ein mit der Hintergrundfarbe gefülltes Rechteck über die gesamte Fläche malst.
Ist natürlich Blödsinn :( Theoretisch reicht ein Invalidate(), denn dann muss sich das Panel neu malen. Und damit hast du dann wieder ein leeres Panel. Falls du die Koordinaten der Linien gespeichert hast, musst du diese natürlich vorher löschen. |
AW: Gemaltes aus einem Panel löschen
Oder mit einer zuweisbaren Bitmap. Beispiel (ein Formular mit einem Panel und 2 Buttons, schnell heruntergeschrieben, Standardbenennungen beibehalten):
Delphi-Quellcode:
unit Unit6;
interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.StdCtrls; type TPanel = class(Vcl.ExtCtrls.TPanel) private FBitmap: TBitmap; procedure SetBitmap(const Value: TBitmap); protected procedure Paint; override; public property Bitmap: TBitmap read FBitmap write SetBitmap; end; TForm6 = class(TForm) Panel1: TPanel; Button1: TButton; Button2: TButton; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private-Deklarationen } FBitmap: TBitmap; public { Public-Deklarationen } end; var Form6: TForm6; implementation {$R *.dfm} { TPanel } procedure TPanel.Paint; begin inherited; if Assigned(FBitmap) then Canvas.Draw(0, 0, FBitmap); end; procedure TPanel.SetBitmap(const Value: TBitmap); begin FBitmap := Value; Invalidate; end; procedure TForm6.Button1Click(Sender: TObject); begin Panel1.Bitmap := nil; end; procedure TForm6.Button2Click(Sender: TObject); begin Panel1.Bitmap := FBitmap; end; procedure TForm6.FormCreate(Sender: TObject); begin FBitmap := TBitmap.Create; FBitmap.Width := Panel1.Width; FBitmap.Height := Panel1.Height; FBitmap.Canvas.Brush.Color := clRed; FBitmap.Canvas.FillRect(Rect(0, 0, FBitmap.Width, FBitmap.Height)); Panel1.Bitmap := FBitmap; end; procedure TForm6.FormDestroy(Sender: TObject); begin FBitmap.Free; end; end. |
AW: Gemaltes aus einem Panel löschen
Danke für die Antworten :wink:, ich werde es auf diese Weisen versuchen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:14 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