Evo koda koji je za high a na isti nacin moze da se koristi za width.
Inace QR sam napisao da ne koristim a ovaj kod sam nasao jer kako to inace radi.
Code (delphi):
var
W, x, y: Integer;
R: TRect;
Scale, TxtHeight: Extended;
cap: String;
begin
Scale := QRPrinter.XFactor / Screen.PixelsPerInch * 254;
QRPrinter.Canvas.Font := Font;
QRPrinter.Canvas.Font.Height := Round(Scale * Font.Height);
SetRect(R, QRPrinter.XPos(OfsX + Size.Left),
QRPrinter.YPos(OfsY + Size.Top),
QRPrinter.XPos(OfsX + Size.Left + Size.Width),
QRPrinter.YPos(OfsY + Size.Top + Size.Height));
if not Transparent then
with QRPrinter.Canvas do
begin
Brush.Color := Color;
Brush.Style := bsSolid;
FillRect(R);
Brush.Style := bsClear;
end;
W := Round(Scale * 2);
Frame.InsideRect(R, W);
TxtHeight := (Canvas.TextHeight('W')) * Scale;
Cap := 'Some text for print';
W2 := QRPrinter.Canvas.TextWidth(Cap);
Y := R.Top + Round(TxtHeight);
X := R.Left;
Frame.InsideRect(R, -W);
ExtTextOut(QRPrinter.Canvas.Handle, X, Y, ETO_CLIPPED, @R, @Cap[1], Length(Cap), nil);
Frame.InsideRect(R, W);
PrintFinished := True;
Frame.InsideRect(R, -W);
Frame.PaintIt(QRPrinter.Canvas, R, Zoom, []);
end;