Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Graphics32 Render Text?? (https://www.delphipraxis.net/56576-graphics32-render-text.html)

Bernd29bln 8. Nov 2005 00:21


Graphics32 Render Text??
 
Hallo, :hi:


Ich möchte meine ListBox Einträge auf der image321(Graphics32) untereinander Auflisten.
Hier mal mein Code:

Delphi-Quellcode:
Image321.Bitmap.Clear;
  for i := 0 to Listbox1.Count-1 do
  Image321.Bitmap.RenderText(10 ,10 ,ListBox1.Items.Strings[ListBox1.Itemindex], i, $FFFFFFFF);
Nur leider schreibt er alle einträge Übereinander, Was muss ich ändern????

Bitte Helft :wall:

Gruss Bernd

dizzy 8. Nov 2005 01:24

Re: Graphics32 Render Text??
 
Wie wäre es denn mit der y-Koordinate? :zwinker:

edit: Die Stelle an der du dein "i" stehen hast definiert das Antialiasing - also völlig falsch dort. Aber auch ein einfaches "i" an Stelle von "10" bei der y-Koordinate wird nicht viel besser aussehen. Besser wäre da ein "i*Schrifthöhe". (Die Schrifthöhe bekommst du auch über TBitmap32 heraus.)

nochmaledit: Du wirst im Übrigen nur den aktuell angewählten ListBox-Eintrag n mal untereinander bekommen, wenn du nicht i als Index für das Stringarray der ListBox verwendest. Irgendwie ist da bei dir alles durcheinander geraten :)

Gruss,
Fabian

Bernd29bln 8. Nov 2005 08:12

Re: Graphics32 Render Text??
 
Hi Dizzy,

Könnstest du mir das mal bitte näher erklären.

wäre echt nett von dir.

Gruss Bernd

-NIP- 8. Nov 2005 14:24

Re: Graphics32 Render Text??
 
Das müsste z.B. so gehen:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  i:Integer;
begin
  Image321.Bitmap.Clear;
  for i := 0 to Listbox1.Count-1 do
  begin
    Image321.Bitmap.RenderText(10,i*Image321.Bitmap.TextHeight(ListBox1.Items.Strings[i]),ListBox1.Items.Strings[i],0,Color32(255,255,255));

  end;
end;
Für die Funktion "Color32" musst du noch GR32 zu deinem uses Abschnitt hinzufügen.

dizzy 8. Nov 2005 14:58

Re: Graphics32 Render Text??
 
Zitat:

Zitat von Bernd29bln
Hi Dizzy,

Könnstest du mir das mal bitte näher erklären.

wäre echt nett von dir.

Gruss Bernd

Ich nehme einfach an, dass du die Parameter verwechselt hast. Schau zur Not mal in die Hilfe der G32 - unter TBitmap32 findet sich eine kurze Beschreibung aller Methoden und Properties.

Zitat:

Zitat von G32 Hilfe
Delphi-Quellcode:
procedure RenderText( X, Y: Integer; const Text: String; AALevel: Integer; Color: TColor32);

X und Y sind die Position, und du hast für beide fix "10" eingetragen. Wie soll da etwas untereinander kommen? ;)
Dein "i" steht an der Stelle von "AALevel", womit du die Stärke des Antialiasing angibst, und bei deiner Angabe von "Text" hast du einen festen Index für die Stringlist angegeben - statt dessen wäre dort das "i" angebracht um über alle Strings zu wandern.
"$FFFFFFFF" als "Color" ist okay, das wäre voll deckendes Weiss. Einfacher ist hier das Verwenden der Funktion GR32.Color32(). Dort kannst du die Farbanteile als Bytes angeben, und optional noch die Transparenz.
Im übrigen ist "RenderText" erheblich langsamer als "TextOut"! Somit also kaum geeignet um längere Text zu zeichnen, sondern eher für Teile bei denen es wichtig ist, dass sie a) Transparent sind, und/oder b) mit Kantenglättung gezeichnet werden. Für alle anderen Fälle empfehle ich TBitmap32.TextOut().

Gruss,
Fabian

Bernd29bln 14. Nov 2005 22:05

Re: Graphics32 Render Text??
 
Hallo,

Vielen Dank, hat echt super geklappt.

:thumb:

Gruss Bernd


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:07 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