[Lazarus] Canvas.TextRec aligns to canvas and not rectangle for tlTop and taLeftJustify.
Werner Pamler
werner.pamler at freenet.de
Sun Feb 19 12:39:51 CET 2023
Am 19.02.2023 um 08:00 schrieb Russ via lazarus:
> When writing text to the canvas using Canvas.TextRec(), using layout
> tlTop and/or alignment taLeftJustify, the text is aligned to the
> canvas left and top edges instead of those edges of the text
> rectangle. The other layout and alignment cases work correctly.
>
> The sample code below illustrates this for all 9 possible combinations
> of layout and alignment.
>
> Changing lines 1302 and 1304 of canvas.inc fixes this problem:
> 1302: fRect.Left := X; --> fRect.Left := fRect.Left + X;
> 1304: fRect.Top := Y; --> fRect.Top := fRect.Top + Y;
>
> canvas.inc in Lazarus 2.2.4 and trunk are the same.
Please don't change this - it will break numerous code.
The reported behaviour is compatible with Delphi. What do you think are
the additional x,y parameters good for? Delphi (and Lazarus) interprets
them as the starting point of the text in the case where Layout is tlTop
and Alignment is taLeftJustify, no matter what the Rect parameter is
(which is used a clipping rectangle, though). God knows why x,y are not
interpreted as an offset to the positions defined by Layout/Alignment
directly.
More information about the lazarus
mailing list