procedure CanvasZoom(cnv: TCanvas; zoom: Word; var x, y: Integer);
const
pz = 100;
begin
if zoom = pz then SetMapMode(cnv.Handle, MM_TEXT)
else begin
SetMapMode(cnv.Handle, MM_ISOTROPIC);
SetWindowExtEx(cnv.Handle, zoom, zoom, nil);
SetViewportExtEx(cnv.Handle, pz, pz, nil);
x := round(x * zoom / pz);
y := round(y * zoom / pz);
end;
end;
// Je kleiner der Zoomfaktor, desto größer wird
// alles dargestellt
var
i: integer = 16; // z.B.
j: integer = 180; // z.B.
procedure TForm1.Button1Click(Sender: TObject);
var x, y: integer;
begin
x := i;
y := j;
canvas.Font.Name := 'Arial'; // muss TrueType sein
canvas.Font.size := 8;
Canvas.Textout(Image1.left, Image1.top, 'TESTSCHRIFT');
canvaszoom(Canvas, 50, x, y);
canvas.Draw(x, y, image1.picture.bitmap);
Canvas.Textout(x, y, 'TESTSCHRIFT');
end;
// zurücksetzen
procedure TForm1.Button5Click(Sender: TObject);
var x, y: integer;
begin
x := i;
y := j;
canvaszoom(Canvas, 100, x, y);
canvas.Draw(x, y, Image1.picture.bitmap);
Canvas.Textout(x, y, 'TESTSCHRIFT');
end;