14 Stimmen

Breite in Pixeln eines Textes/einer Beschriftung in Delphi 7

Hier ist mein Problem, ich möchte die tatsächliche Länge des Textes in Pixeln wissen (beachten Sie, dass verschiedene Buchstaben in einigen Schriftarten unterschiedliche Längen haben). Ich werde dies für eine bessere Anpassung der Spaltenbreite in DBGrid verwenden.

33voto

RRUZ Punkte 132753

Sie können die Canvas.TextWidth y Canvas.TextHeight Funktionen.

Option 1, Verwendung des Canvas des Steuerelements

WidthInPixels := Label1.Canvas.TextWidth('My Text');

Option 2, Erstellung einer temporären Leinwand (unter Verwendung einer Tbitmap)

Function GetWidthText(const Text:String; Font:TFont) : Integer;
var 
  LBmp: TBitmap; 
begin
  LBmp := TBitmap.Create;
  try
   LBmp.Canvas.Font := Font;
   Result := LBmp.Canvas.TextWidth(Text); 
  finally
   LBmp.Free;
  end;
end;

6voto

Wael Dalloul Punkte 21012

Wenn Sie eine Delphi-Komponente haben, die eine "Canvas"-Eigenschaft hat, können Sie Component.Canvas.TextWidth verwenden. Zum Beispiel: um die Breite des Textes von DBGrid zu erhalten, können Sie verwenden:

DBGrid1.Canvas.TextWidth('Stack'); 

Hier finden Sie eine vollständige Referenz zu diesem Thema: Länge der Delphi-Zeichenkette in Pixel

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X