我正在尝试通过旋转矩形的点来旋转矩形,使用以下代码:
var
dx,dy:real;
rotp:Tpoint;
begin
dx := (CenterPoint.Y * Sin(angle)) - (CenterPoint.X * Cos(angle)) + CenterPoint.X;
dy := -(CenterPoint.X * Sin(angle)) - (CenterPoint.Y * Cos(angle)) + CenterPoint.Y;
rotP.X := round((point.X * Cos(angle)) - (point.Y * Sin(angle)) + dx);
rotP.Y := round((point.X * Sin(angle)) + (point.Y * Cos(angle)) + dy);
result:= rotP;
end;
但是 round 函数会使矩形变形,有没有人有什么想法来克服这个问题?
我附上了图片,白色点是我围绕中心点旋转的点,我确信图片已经被正确旋转,因此白色点应该与图片的角落相同。
round
是一个函数,而不是运算符。 - Andreas RejbrandReal
并没有被弃用。它是一个通用类型,目前别名为Double
。你可能想到的是Real48
。 - David Heffernan