![]() |
AW: Paintbox- Text schreiben
Danke!
Fast gelöst: Zitat:
Außerdem kann der Text nicht komplett angezeigt werden er wird am "Hallo Wel..." von etwas überdeckt.
Delphi-Quellcode:
Wie kann das sein?
Form1.PaintBox1.Canvas.TextOut(Schreibflaeche.Width div 2 - 25, 70,Schrift);
Edit:[entfernt] Edit2:
Delphi-Quellcode:
Das füht im Moment dazu:
procedure TForm1.PaintBox1Paint(Sender: TObject);
var Schrift: string; canvas : TCanvas; x: integer; begin //Paintbox an Panel PainBox1.Height:=Blatt.Height; PaintBox1.Width:=Blatt.Width; // Paintbox erstellen PaintBox1:=TPaintbox.Create(self); PaintBox1.Parent:=Panel1; // Paintbox weiß färben PainBox1.canvas.brush.color:=clwhite; PaintBox1.Canvas.FillRect(Rect(0,0,PaintBox1.width,PaintBox1.height)); canvas := (Sender as TPaintBox).Canvas; // Schreibversuch canvas.Brush.Color := clBlack; Schrift:= 'Hallo Welt'; Form1.Panel1.canvas.TextOut(PaintBox1.Width div 2 -25, 70,Schrift); end; Paintbox erstellt, jedoch komischerweise ist nur ein kleines Feld in der obeneren linken Ecke weiß und es steht Hallo Wel... dort drin. Es flackert... |
AW: Paintbox- Text schreiben
Dein Code enthält leider einige Fehler.
1.) im OnPaint-Event
Delphi-Quellcode:
darf nur gezeichnet werden und nichts anderes
procedure TForm1.PaintBox1Paint
Zum Beispiel ist diese Grössenanpassung
Delphi-Quellcode:
verboten. Man muss das schon viel früher ausführen.
//Paintbox an Panel
PainBox1.Height:=Blatt.Height; PaintBox1.Width:=Blatt.Width; Aber Besten man setzt das Property Align der Paintbox auf alClient und spart sich die Zuweisung von Breite und Höhe. 2.) du erzeugst dynamisch eine Paintbox
Delphi-Quellcode:
Das geht gar nicht, denn die Paintbox muss natürlich schon früher erzeugt worden sein.
// Paintbox erstellen
PaintBox1:=TPaintbox.Create(self); PaintBox1.Parent:=Panel1; Wenn du innerhalb von OnPaint eine neue Paintbox erzeugst ist das natürlich tödlich. Du hast zwei verschiedene Paintboxen (wobei eine sinnigerweise Painbox1 also auf Deutsch: "SchmerzBox1" heisst :-D) was ziemlich verwirrend ist. Hier mal der bereinigte Code für nur eine Paintbox:
Delphi-Quellcode:
procedure TForm1.PaintBox1Paint(Sender: TObject);
var Schrift: string; canvas : TCanvas; begin // zuerst den Canvas der Paintbox holen canvas := (Sender as TPaintBox).Canvas; // auch folgende Schreibweise wäre möglich canvas := PaintBox1.Canvas; // Paintbox weiß färben canvas.brush.color:=clwhite; canvas.FillRect(Rect(0,0,PaintBox1.width,PaintBox1.height)); // Textausgabe canvas.Brush.Color := clBlack; Schrift:= 'Hallo Welt'; canvas.TextOut((PaintBox1.Width div 2)-25, 70,Schrift); end; |
AW: Paintbox- Text schreiben
Ersteinmal Danke!
Zitat:
Dein Code hat geholfen, jedoch muss man dort auch eine Kleinigkeit ändern. Um die Farbe des Textes einzustellen muss man statt die Brush.Color zu ändern die Font eigenschaften ändern. Standardmäßig ist die Schrift schwarz. Zitat:
Also muss es
Delphi-Quellcode:
heißen, wenn man den schwarzen tetx auf weißem Hintergrund lesen möchte.
canvas.Brush.Color := clWhite;
Ein Problem habe ich jedoch noch:
Delphi-Quellcode:
Das sollte meine Paintbox mit einem weißen Rechteck bemalen. Tut es aber nicht, stattdessen ist das Rechteck aus irgendeinem Grund nur 100 hoch und 100 breit. Wenn ich manuelle Werte eingeben wie:
canvas.brush.color:=clwhite;
canvas.FillRect(Rect(0,0,PaintBox1.width,PaintBox1.height)); canvas.FillRect(Rect(0,0,300,300)); dann wird das weiße Rehcteck schonmal größer. Kann man vielleicht Variablen (x,y) für Höhe und Breite verwenden? Wieso reagiert das Programm auf
Code:
nicht?
PaintBox1.width,PaintBox1.height
(Vielleicht eine function benutzen? Wenn ja wie?) Ich hoffe jemand weiß auf diese Fragen eine Antwort. Dunkelbunt |
AW: Paintbox- Text schreiben
Ein bisschen wenig Code um den Fehler nachzuvollziehen.
Bist Du auf dem falschen Canvas unterwegs? Hast Du mehrere Paintboxen und kommst mit der Namensvergabe durcheinander? Malst Du im OnPaint? LG Thomas |
AW: Paintbox- Text schreiben
Hi,
Zitat:
Zitat:
Zitat:
|
AW: Paintbox- Text schreiben
Danke für eure Hilfe, ich habe jetzt auch für das letzte Problem eine Lösung gefunden.
Ich verwende um die Paintbox weiß zu färben: statt dem
Delphi-Quellcode:
das
canvas.brush.color:=clwhite;
canvas.FillRect(Rect(0,0,PaintBox1.width,PaintBox1.height));
Delphi-Quellcode:
Da die Paintbox an das Panel gebunden ist passt das ganze.
canvas.brush.color:=clwhite;
canvas.FillRect(Rect(0,0,Panel1.width,Panel1.height)); Vielen Dank für eure Hilfe, LG Dunkelbunt |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:26 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