我正在尝试绘制以下图片:
使用此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)。
第一个点是左上角,第二个点是左下角。然后继续向右。
这是一个更好的解释:
抱歉我的英文。
有什么建议吗?
答案 0 :(得分: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。
答案 1 :(得分: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他们,找出你的计算出错的确切位置。
答案 2 :(得分:0)
反转点绘制顺序会修复吗?