3

我正在尝试绘制以下图像:

在此处输入图像描述

使用这个objective-c代码:

CGContextSetFillColorWithColor(ctx, [[UIColor redColor] CGColor]);
CGContextMoveToPoint(ctx, position.X - (size.width / 2), position.Y - (size.height / 2));
CGContextAddLineToPoint(ctx, position.X - (size.width / 2), position.Y + (size.height / 2));
CGContextAddLineToPoint(ctx, position.X - (size.width / 4), position.Y + (size.height / 2));
CGContextAddArc(ctx, position.X, position.Y + (size.height / 2), (size.width / 4), -M_PI, M_PI, 0);
CGContextAddLineToPoint(ctx, position.X + (size.width / 2), position.Y + (size.height / 2));
CGContextAddLineToPoint(ctx, position.X + (size.width / 2), position.Y - (size.height / 2));
CGContextFillPath(ctx);

但它不起作用。我得到这张图片:

在此处输入图像描述

图像的宽度为 size.width,高度为 size.height。原点是(position.X, position.Y)。这个点在中心,在 (size.width /2, size.height / 2)。

第一个点是左上角,第二个点是左下角。然后继续向右。

这是一个更好的解释: 在此处输入图像描述

对不起我的英语不好。

有什么建议吗?

4

3 回答 3

2

我改变了这一行:

CGContextAddArc(ctx, position.X, position.Y + (size.height / 2), (size.width / 4), -M_PI, M_PI, 0);

具有以下内容:

CGContextAddArc(ctx, position.X, position.Y + (size.height / 2), (size.width / 4), -M_PI, 0, 0);

现在它起作用了!!!我对第二个角度有误。而不是M_PI,正确的是 0。

于 2011-06-19T17:28:21.273 回答
0

你说:图像的宽度是size.width,高度是size.height。原点是 (position.X, position.Y),这个点在中心,在 (size.width /2, size.height / 2)。

首先想到的是,一般来说,您的中心点实际上位于 (position.X + size.width/2.0, position.Y + size.width/2.0),(如果您愿意,可以将其包裹在 floorf 中)。

如果这不起作用,我的建议是为每个中间值创建 CGPoint、CGRect 等,以使您的所有计算都明确。然后,如果需要,您可以对它们进行 NSLog 记录,准确找出您的计算出错的地方。

于 2011-06-19T16:05:24.817 回答
0

颠倒你的点画顺序能解决问题吗?

于 2011-06-19T17:06:10.903 回答