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/)
-   -   Text auf Canvas mit unterschidlichen Schrift-Styles zeichen??? (https://www.delphipraxis.net/172713-text-auf-canvas-mit-unterschidlichen-schrift-styles-zeichen.html)

romber 18. Jan 2013 15:02

Text auf Canvas mit unterschidlichen Schrift-Styles zeichen???
 
Hallo!

Ich möchte auf der Canvas ein Text zeichen, in dem bestimmte Wörter fett dargestellt werden. Etwa so:

Firma: Irgendwas GmbH, Name: Mustermann, Vorname: Franz usw...

Dafür muss ich für jedes Teil den Font.Style der Canvas umschalten und das neue Wort direkt am Ende des bisherigen zeichnen. Nun habe ich das Problem, dass ich nicht weis, wo das Ende des Textes ist. TextWidth steht mir in dem Fall nicht zur Verfügung.

Wie bekomme ich die Koordinates des letzten auf der Canvas gezeichneten Pixels?

MeierZwoo 18. Jan 2013 15:06

AW: Text auf Canvas mit unterschidlichen Schrift-Styles zeichen???
 
xxx.Canvas.TextOut(xxx.Canvas.PenPos.x,xxx.Canvas. PenPos.y,Text);

xxx steht hier für das betreffende Canvas-Objekt,
wenn es der Printer ist, also Printer.canvas, ansonsten ...

Text für den aktuellen Ausgabestring

romber 18. Jan 2013 15:14

AW: Text auf Canvas mit unterschidlichen Schrift-Styles zeichen???
 
Viele Dank für die schnelle Reaktion!

PenPos ist irgenwie gar nicht da. :?

turboPASCAL 18. Jan 2013 15:21

AW: Text auf Canvas mit unterschidlichen Schrift-Styles zeichen???
 
Delphi-Quellcode:
procedure TFrmXYZ.DrawTheText(theCanvas: TCanvas; X,Y: Integer; theText: String);
var
  p, w: integer;
  s: string;
begin
  p := Pos(':'#32, theText);

  with theCanvas do
  begin
    Font.Style := Font.Style + [fsBold];
    s := Copy(theText, 1, p+1);
    w := TextWidth(s);
    TextOut(X, Y, s);

    Font.Style := Font.Style - [fsBold];
    Delete(theText, 1, p + 1);
    TextOut(X + w , Y, theText);
  end;
end;

procedure TFrmXYZ.Paint...;
begin
  DrawTheText(Canvas, 50, 160, 'Vorname: Otto');
end;

MeierZwoo 18. Jan 2013 15:27

AW: Text auf Canvas mit unterschidlichen Schrift-Styles zeichen???
 
Zitat:

Zitat von romber (Beitrag 1199647)
PenPos ist irgenwie gar nicht da. :?

Sorry, kann sein, das PenPos nur im Printer.Canvas Object existiert.

Aber eine Lösung mit der Weite ist ja im obigen Post beschrieben.

MeierZwoo 18. Jan 2013 16:12

AW: Text auf Canvas mit unterschidlichen Schrift-Styles zeichen???
 
Ich kann nichts zu Delphi 2010 sagen, aber in 2009 ist im allgemeinen TCanvas

Delphi-Quellcode:
TCanvas.PenPos Eigenschaft, property PenPos: TPoint;


vorhanden. Nicht nur im Printer.

Wäre auch merkwürden, wenn zwar die Koordinaten angesteuert werden können aber nicht ausgelesbar wären.


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