Einzelnen Beitrag anzeigen

ASM

Registriert seit: 16. Aug 2004
165 Beiträge
 
Delphi 7 Enterprise
 
#9

AW: Canvas.TextOut zentrieren

  Alt 14. Dez 2011, 23:41
das ist leider mit Delphi 7 nicht möglich, da ist die Graphics wohl aufgewertet worden.
Ja leider. Die Möglichkeit zur Übergabe der Formatierung ist erst in den neueren Delphiversionen durch Overload-Prozeduren vorhanden.

Man kann sich das aber für Delphi 7 leicht selber zusammenbauen:
Code:
procedure TextOutEx(canvas: TCanvas; r: TRect; s: string; Font: TFont = nil);
var
  x, y: integer;
  StringWidthInPixel, StringHeightInPixel: integer;
begin
  if Font <> nil then Canvas.Font := Font;
  StringWidthInPixel := Canvas.Textwidth(s);
  StringHeightInPixel := Canvas.Textheight(s);
  with r do
  begin
    x := (right - left - StringWidthInPixel) div 2;
    y := (bottom - top - StringHeightInPixel) div 2;
  end;
  Canvas.TextOut(x, y, s);
end;
In der Anwendung:
Code:
procedure TForm1.Button1Click(Sender: TObject);
var
  r: TRect;
  Font: TFont;
begin
  // hier ist der Canvas der eines TImage
  r:=Image1.ClientRect;
  // falls benötigt:
  Font := TFont.Create;
  try
    with Font do
    begin
      color := clRed;
      Style := [fsbold, fsItalic];
      size := 14;
    end;
    // oder Font als Parameter weglassen, falls nichts Spezielles gewünscht
    TextOutEx(Image1.canvas, r, 'Test-Test', Font);
  finally
    Font.Free;
  end;
end;
  Mit Zitat antworten Zitat