![]() |
Paintbox sichtbar machen
ich habe mal da eine frage und zwar ich schreibe gerade ein Programm wie MS-Paint oder soll so ähnlich sein. Ich weis jetzt nicht genau weiter wie ich die Paintbox sichtbare mache oder die Farbe verändere. Könnt ihr mir vielleicht weiter helfen würde mich sehr freuen.
|
Re: Paintbox sichtbar machen
Delphi-Quellcode:
?
paintbox1.canvas.brush.color:=clwhite;
paintbox1.Canvas.FillRect(Rect(0,0,paintbox1.width,paintbox1.height)); |
Re: Paintbox sichtbar machen
Crossposts solltest du angeben:
![]() Grund: So kann man schauen, ob vielleicht woanders schon das geantwortet wurde, was man selber sich gerade überlegen und posten wollte. Dann kann man sich das sparen oder vielleicht das ergänzen. |
Re: Paintbox sichtbar machen
wo muss ich den Code einbinden??? [delphi]
paintbox.canvas.brush.color:=clwhite; paintbox.Canvas.FillRect(Rect(0,0,paintbox.width,p aintbox.height)); Ich würde mich auf antworten sehr freuen. Danke an euch. |
Re: Paintbox sichtbar machen
je nach dem wenn du die Komponente zur Laufzeit erstellst, nach der Erstellung sonst nach dem Form-Create und beim "löschen" bzw "neu erstellen"
|
Re: Paintbox sichtbar machen
sorry aber ich habe nicht genau verstaden was du meinst.
mein code sieht im moment so aus: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, ColorGrd, StdCtrls; type TForm1 = class(TForm) PaintBox: TPaintBox; Btn_Clearall: TButton; procedure Mousmove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure Btn_ClearallClick(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; x,y: integer; implementation {$R *.dfm} procedure TForm1.Mousmove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if ssleft in shift then PaintBox.Canvas.LineTo(x,y); end; procedure TForm1.MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin PaintBox.Canvas.MoveTo(x,y); end; procedure TForm1.Btn_ClearallClick(Sender: TObject); begin PaintBox.Invalidate; end; end. |
Re: Paintbox sichtbar machen
Delphi-Quellcode:
procedure TForm1.Btn_ClearallClick(Sender: TObject);
begin // hier kannst du es einfügen end; // bzw hier solltest du es einfügen : procedure TForm1.FormCreate(Sender: TObject); begin // hier end; |
Re: Paintbox sichtbar machen
funktioniert nicht wie du das meinst
Delphi-Quellcode:
procedure TForm1.Btn_ClearallClick(Sender: TObject);
begin PaintBox.Invalidate; paintbox.canvas.brush.color:=clwhite; paintbox.Canvas.FillRect(Rect(0,0,paintbox.width,paintbox.height)); end; // wie soll ich das denn hier angeben das muss ja in eine Procedure rein??? procedure TForm1.FormCreate(Sender: TObject); begin paintbox.canvas.brush.color:=clwhite; paintbox.Canvas.FillRect(Rect(0,0,paintbox.width,paintbox.height)); end; |
Re: Paintbox sichtbar machen
weiß jetzt nicht ganz was du willst, wie man das OnFormCreate-Ereignis erstellt oder was? Doppelklick auf die Form
|
Re: Paintbox sichtbar machen
Das ding ist ich will einfach nur die Hintergrund farbe der Paintbox WEIß haben. Das ist alles
|
Re: Paintbox sichtbar machen
mhm der Code färbt doch deine Paintbox weiß, ich weiß jetzt nicht wo dein Problem ist, dann mach dir einen Button und schreib den Code im OnClick-Ereignis darein
|
Re: Paintbox sichtbar machen
PERFEKT danke dir. Wars mir eine große hilfe.
Aber habe noch eine frage mit dem Colorgrid. Wie kann ich die farben eizenlt auswählen und abfragen?? |
Re: Paintbox sichtbar machen
im OnChange Ereignis von dem ColorGrid kannst du dann
Delphi-Quellcode:
und zum malen vllt
paintbox1.canvas.brush.color:=ColorGrid1.BackgroundColor;
Delphi-Quellcode:
aber wie du möchtest ;)
paintbox1.canvas.pen.color:=ColorGrid1.ForegroundColor;
aber was auch vllt ganz gut wäre, wäre der ColorDialog:
Delphi-Quellcode:
if ColorDialog1.execute then
paintbox1.canvas.brush.color:=ColorDialog1.Color; |
Re: Paintbox sichtbar machen
DANKEEEEEEEEEEE aber :-D das mit dem ColorDialog für das muss ich doch eine eigen Procedure schreiben oder????
|
Re: Paintbox sichtbar machen
mhm die abfrage kannst du ja auch in dem button machen, wie du willst ;)
Delphi-Quellcode:
wobei colorgrid die auswahl derfarben sehr gering ist ;) bei 16/255^3 Farben :D
if ColorDialog1.execute then
paintbox1.canvas.brush.color:=ColorDialog1.Color else paintbox1.canvas.brush.color:=clwhite; paintbox1.Canvas.FillRect(Rect(0,0,paintbox1.width,paintbox1.height)); hab noch eben was anderes probiert (wenn du jetzt das 4*4 ColorGrid hast und du dann unten rechts hinclickst kannst du noch ne ander Farbe wählen, wie du willst)
Delphi-Quellcode:
Gn8 blink182
procedure TForm1.ColorGrid1Click(Sender: TObject);
begin if ColorGrid1.Selection=15 then begin if ColorDialog1.execute then paintbox1.canvas.brush.color:=ColorDialog1.Color else paintbox1.canvas.brush.color:=clwhite; end else paintbox1.canvas.brush.color:=ColorGrid1.ForeGroundColor; // entweder du machst es noch mit einem Extra Button siehe unten oder du fügst hier die ZEile ein // paintbox1.Canvas.FillRect(Rect(0,0,paintbox1.width,paintbox1.height)); end; procedure TForm1.Button1Click(Sender: TObject); begin paintbox1.Canvas.FillRect(Rect(0,0,paintbox1.width,paintbox1.height)); end; |
Re: Paintbox sichtbar machen
danke ich glaube ich bleibe bei colorgrid müsste reichen von de farben. Aber ich versuche die ganze Zeit mit der Hintergrundfarbe weiß. Mit dem Button geht das jedoch wenn ich das in das FormCreat einfüge dann funkioniert nicht. KOMISCH :?
|
Re: Paintbox sichtbar machen
Das ist nicht komisch. Eine PaintBox wird beim Zeichnen des Fensters überschrieben. Zum Beispiel wenn ein anderes Fenster über das Fenster gezogen wird.
Und das Fenster wird beim Anzeigen nach dem Erzeugen logischerweise auch neu gezeichnet. Deshalb benutzt man eine TPaintBox im Allgemeinen auch mit einer ![]() |
Re: Paintbox sichtbar machen
Aber normalerweise muss doch die Hintergrundfarbe weiß sein wenn ich das hier angeben bei FormCreat
Delphi-Quellcode:
paintbox.canvas.brush.color:=clwhite;
paintbox.Canvas.FillRect(Rect(0,0,paintbox.width,paintbox.height)); |
Re: Paintbox sichtbar machen
Nein, wie denn? Nach dem Erzeugen des Formulars wird es angezeigt und dabei logischerweise neu gezeichnet. Und damit ist der vorher gezeichnete Inhalt weg. Was ist daran so schwer zu verstehen?
Wie gesagt: Zieh einfach ein Formular über die PaintBox, wenn du etwas hineingezeichnet hast. Danach ist der Inhalt weg. Inhalte, die nach einem Neuzeichnen noch vorhanden sein sollen, müssen in OnPaint wieder in die PaintBox gezeichnet werden. |
Re: Paintbox sichtbar machen
ich glaube du verstehst nicht was ICH sage oder sagen möchte. ICH will einfach nur das gleich am anfach nachdem Compalieren die Pintbox sichtbar in weiß ist.Mehr nicht. OKI DOKI
|
Re: Paintbox sichtbar machen
Das läuft eben nicht so wie du es dir vorstellst. In OnPaint musst du alles Zeichnen, was auch nach einem Neuzeichnen des Formulars da sein soll. Wenn das Formular nach dem Erzeugen und damit nach deinem Code angezeigt wird, wird alles, was du in OnCreate gezeichnet hast, überschrieben.
Du musst also entweder einfach OnPaint benutzen wie du es in dem Beispiel siehst oder du nimmst ein TImage statt der TPaintBox. In einem TImage werden die Inhalte bei einem Neuzeichnen nicht überschrieben. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:16 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