在圆形内部相对于其中心绘制一个矩形

时间:2017-08-14 11:58:30

标签: ios geometry cgpath

我正在尝试以给定角度将CGPath放在圆圈上。路径看起来更像一个矩形。当我完成创建路径时,我移动到圆圈的中心并从中绘制路径。但我想将矩形的左中心与圆的中心对齐,而不是左上角。我想,我应该通过应用一些公式来计算矩形相对于给定角度的原点,我不知道该怎么做。

 //My logic to draw the circle goes here
....
    //My custom rect drawing logic is inside the CreatePath method
    CGPath customRectPath = CreatePath(size);
    context.TranslateCTM(center.X, center.Y);//I am sure this is where I am doing it wrong
    context.RotateCTM((float)(angle));
    context.AddPath(customRectPath);
    context.DrawPath(CGPathDrawingMode.EOFill);

图像应该解释我想说的内容。

enter image description here

2 个答案:

答案 0 :(得分:1)

TranslateCTM设置矩形的左上角角的平移,而不是左侧的中点(您想要的)。要做到这一点,只需从y-offset中取出一半矩形的高度:

context.TranslateCTM(center.X, center.Y - size.Height / 2);

答案 1 :(得分:0)

您应该创建矩形,使其相对于旋转原点。

例如矩形的角落

0, - width / 2      // top left
size , - width / 2  // top right
size, width /2,     // bottom right
0, width / 2        // bottom left

您打算转换的任何形状都应相对于预期的旋转和比例原点创建。