![]() |
Länge eines Strings in Pixel ermitteln (ohne Komponenten) ?
Hallo,
kann mir einer von euch vielleicht verraten wie man die Länge eines Strings in Pixel errechnen kann (bei einem vorgegebenem Font-Namen) ? Ich greife dabei auf keine Komponenten zurück, d.h. meine Anwendung ist eine reine NonVCL-Anwendung (ansonsten hätte ich schon eine Lösung gefunden). Für einen Tipp wäre ich sehr dankbar. Vielen Dank im Vorraus ! Liebe Grüße, Thomas |
Re: Länge eines Strings in Pixel ermitteln (ohne Komponenten
Guck mal (im PSDK) nach GetTextExtentPoint32
/edit: Hab ich aus'm Delphi05-Quelltext, Graphics.pas:2615 |
Re: Länge eines Strings in Pixel ermitteln (ohne Komponenten
Hallo,
vielen Dank, das dürfte weiterhelfen. Das einzige Problem ist noch das ich nicht weiss wie ich eine Font (von der ich nur den Namen als String kenne) festlege der verwendet werden soll. Momentan erledige ich dies so:
Delphi-Quellcode:
In der zweiten Zeile der Prozedur ("fnt.Name:=FontName") jedoch steigt Delphi mit einer Zugriffsverletzung aus. "FontName" ist der String in dem der Name der zu verwendenden Font drinnen steht.
procedure TD3dText.CalcTextSize;
var textSize:TSize; dc:hdc; fnt:TFont; begin dc:=GetDc(0); fnt.Name:=FontName; // Hier geschieht der Fehler ! SelectObject(DC, fnt.Handle); GetTextExtentPoint32(dc,PChar(text),length(text),textSize); end; Wie kann ich nun am besten die Font festlegen ? Vielen Dank nochmals im Vorraus ! Liebe Grüße, Thomas |
Re: Länge eines Strings in Pixel ermitteln (ohne Komponenten
|
Re: Länge eines Strings in Pixel ermitteln (ohne Komponenten
Zitat:
Zitat:
|
Re: Länge eines Strings in Pixel ermitteln (ohne Komponenten
![]() ...mal was zum abschauen. :wink: // Edit:
Code:
Normalerweise müstest Du ja erst fnt := TFont.Create aufrufen damit fnt mit einem Font "gefüllt" wird.
[b]procedure[/b] TD3dText.CalcTextSize;
[b]var[/b] textSize:TSize; dc:hdc; fnt:TFont; [b]begin[/b] dc:=GetDc(0); [color=#ff0000]fnt.Name:=FontName; // Hier geschieht der Fehler ![/color] SelectObject(DC, fnt.Handle); GetTextExtentPoint32(dc,PChar(text),length(text),textSize); [b]end;[/b] ![]() |
Re: Länge eines Strings in Pixel ermitteln (ohne Komponenten
Zitat:
|
Re: Länge eines Strings in Pixel ermitteln (ohne Komponenten
Oooppsss....schlim sowas, wie konnte ich DAS nur vergessen *indenbodenschäm* !?! :oops: :oops: :oops:
Es scheitert halt immer am einfachsten ;-) Vielen vielen Dank ! Liebe Grüße, Thomas |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:40 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