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;