Einzelnen Beitrag anzeigen

Popov
(Gast)

n/a Beiträge
 
#4

AW: Canvas Texte verschiedener Größen auf einer Linie ausgeben?

  Alt 4. Jan 2014, 21:57
Ok, vielen Dank. Die offene Frage habe ich mir anscheinend schon vorher selbst beantwortet. Die größte Schrift bildet die Oberkannte, womit man nur die Höhe der der größte Schrift ermitteln muss und die dann abziehen. So kann man dann auch die Oberkannte einhalten.
Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
  procedure TextRect(ACanvas: TCanvas; X, Y: Integer; Txt: String);
  var
    Size: TSize;
  begin
    ACanvas.Brush.Style := bsClear;
    ACanvas.Pen.Color := clRed;
    Size := ACanvas.TextExtent(Txt);
    ACanvas.Rectangle(Rect(X, Y, X + Size.cx, Y - Size.cy));
  end;

var
  d: Integer;
begin
  Canvas.Font.Name := 'Arial';

  Canvas.Font.Size := 28;
  d := Canvas.TextHeight('X');

  SetTextAlign(Canvas.Handle, TA_BASELINE);

  Canvas.Font.Size := 10;
  Canvas.TextOut(100, 100 + d, 'Hallo');
  TextRect(Canvas, 100, 100 + d, 'Hallo');

  Canvas.Font.Size := 28;
  Canvas.TextOut(150, 100 + d, 'Welt');
  TextRect(Canvas, 150, 100 + d, 'Welt');

  Canvas.Pen.Color := clBlue;
  Canvas.MoveTo(0, 100); Canvas.LineTo(300, 100);
end;
EDIT:

Und danke noch mal an MeierZwoo.
  Mit Zitat antworten Zitat