AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Paintbox- Text schreiben

Ein Thema von Dunkelbunt27 · begonnen am 4. Nov 2010 · letzter Beitrag vom 7. Nov 2010
Antwort Antwort
Seite 2 von 2     12
Benutzerbild von Dunkelbunt27
Dunkelbunt27

Registriert seit: 10. Aug 2010
232 Beiträge
 
Delphi XE Professional
 
#11

AW: Paintbox- Text schreiben

  Alt 4. Nov 2010, 20:11
Danke!
Fast gelöst:
Zitat:
Parent der Paintbox sollte das Panel sein
Jetzt sieht man meinen Text, jedoch flackert er, trotz Double Buffered...
Außerdem kann der Text nicht komplett angezeigt werden er wird am "Hallo Wel..." von etwas überdeckt.
Form1.PaintBox1.Canvas.TextOut(Schreibflaeche.Width div 2 - 25, 70,Schrift); Wie kann das sein?

Edit:[entfernt]

Edit2:
Delphi-Quellcode:
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;
Das füht im Moment dazu:
Paintbox erstellt, jedoch komischerweise ist nur ein kleines Feld in der obeneren linken Ecke weiß und es steht Hallo Wel... dort drin. Es flackert...

Geändert von Dunkelbunt27 ( 4. Nov 2010 um 21:03 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#12

AW: Paintbox- Text schreiben

  Alt 5. Nov 2010, 06:15
Dein Code enthält leider einige Fehler.
1.) im OnPaint-Event procedure TForm1.PaintBox1Paint darf nur gezeichnet werden und nichts anderes

Zum Beispiel ist diese Grössenanpassung
Delphi-Quellcode:
//Paintbox an Panel
PainBox1.Height:=Blatt.Height;
PaintBox1.Width:=Blatt.Width;
verboten. Man muss das schon viel früher ausführen.
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:
// Paintbox erstellen
PaintBox1:=TPaintbox.Create(self);
PaintBox1.Parent:=Panel1;
Das geht gar nicht, denn die Paintbox muss natürlich schon früher erzeugt worden sein.
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 ) 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;
  Mit Zitat antworten Zitat
Benutzerbild von Dunkelbunt27
Dunkelbunt27

Registriert seit: 10. Aug 2010
232 Beiträge
 
Delphi XE Professional
 
#13

AW: Paintbox- Text schreiben

  Alt 5. Nov 2010, 15:45
Ersteinmal Danke!

Zitat:
Painbox1
Das war ein Schreibfehler
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:
canvas.Brush.Color := clBlack;
Bewirkt, dass ein Rechteck um den Text schwarz gezeichnet wird... Dadurch wird der Text unsichtbar, da man schwarz auf schwarz nicht lesen kann.
Also muss es canvas.Brush.Color := clWhite; heißen, wenn man den schwarzen tetx auf weißem Hintergrund lesen möchte.

Ein Problem habe ich jedoch noch:
Delphi-Quellcode:
   canvas.brush.color:=clwhite;
   canvas.FillRect(Rect(0,0,PaintBox1.width,PaintBox1.height));
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.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:
PaintBox1.width,PaintBox1.height
nicht?
(Vielleicht eine function benutzen? Wenn ja wie?)

Ich hoffe jemand weiß auf diese Fragen eine Antwort.

Dunkelbunt
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#14

AW: Paintbox- Text schreiben

  Alt 5. Nov 2010, 18:53
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
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von Dunkelbunt27
Dunkelbunt27

Registriert seit: 10. Aug 2010
232 Beiträge
 
Delphi XE Professional
 
#15

AW: Paintbox- Text schreiben

  Alt 6. Nov 2010, 12:30
Hi,
Zitat:
Bist Du auf dem falschen Canvas unterwegs?
Weiß nicht genau was du meinst, iegentlich nciht.

Zitat:
Hast Du mehrere Paintboxen und kommst mit der Namensvergabe durcheinander?
Nein. Ich habe 1ne Paintbox und keine Namensprobleme.

Zitat:
Malst Du im OnPaint?
Ja.
  Mit Zitat antworten Zitat
Benutzerbild von Dunkelbunt27
Dunkelbunt27

Registriert seit: 10. Aug 2010
232 Beiträge
 
Delphi XE Professional
 
#16

AW: Paintbox- Text schreiben

  Alt 7. Nov 2010, 11:36
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:
   canvas.brush.color:=clwhite;
   canvas.FillRect(Rect(0,0,PaintBox1.width,PaintBox1.height));
das
Delphi-Quellcode:
   canvas.brush.color:=clwhite;
   canvas.FillRect(Rect(0,0,Panel1.width,Panel1.height));
Da die Paintbox an das Panel gebunden ist passt das ganze.

Vielen Dank für eure Hilfe,
LG Dunkelbunt
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:29 Uhr.
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