在iPhone应用程序中绘制椭圆的最佳方法是什么?

在iPhone应用程序中绘制椭圆的最佳方法是什么?,iphone,cocoa,cocoa-touch,quartz-graphics,Iphone,Cocoa,Cocoa Touch,Quartz Graphics,我想要一个类似于iPhone应用程序中邮件应用程序的椭圆。此处有一个仅供参考的屏幕截图: 最后我想要一个以数值为中心的椭圆。此任务最好使用UIImage吗?也许用石英画出来的开销更小?如果是用石英制作的,有人能显示绘制它的解决方案吗?啊,一个圆角矩形。这不难画。您可以使用贝塞尔路径来获得您想要的。代码如下所示: CGRect rect; CGFloat minX = CGRectGetMinX(rect), minY = CGFloatGetMinY(rect), maxX = CGFloatG

我想要一个类似于iPhone应用程序中邮件应用程序的椭圆。此处有一个仅供参考的屏幕截图:


最后我想要一个以数值为中心的椭圆。此任务最好使用UIImage吗?也许用石英画出来的开销更小?如果是用石英制作的,有人能显示绘制它的解决方案吗?

啊,一个圆角矩形。这不难画。您可以使用贝塞尔路径来获得您想要的。代码如下所示:

CGRect rect;
CGFloat minX = CGRectGetMinX(rect), minY = CGFloatGetMinY(rect), maxX = CGFloatGetMaxX(rect), maxY = CGRectGetMaxY(rect);

CGFloat radius = 3.0; // Adjust as you like
CGContextBeginPath(context);
CGContextMoveToPoint(context, (minX + maxX) / 2.0, minY);
CGContextAddArcToPoint(context, minX, minY, minX, maxY, radius);
CGContextAddArcToPoint(context, minX, maxY, maxX, maxY, radius);
CGContextAddArcToPoint(context, maxX, maxY, maxX, minY, radius);
CGContextAddArcToPoint(context, maxX, minY, minX, minY, radius);
CGContextClosePath(context);

现在,您已经在图形上下文中有了一条路径,您可以使用
CGContextDrawPath
CGContextFillPath
功能来绘制路径或勾勒路径。

使用类似药丸的邮件,其中半径等于高度的一半,您可以通过绘制两个180°圆弧而不是四个90°圆弧来简化此过程。感谢Alex和Peter,现在测试。如果我想在椭圆上画一个数值,需要什么样的数学才能到达椭圆的中心并在上面写下文字?我没有注意到它是药丸形状的!照彼得说的去做;它可以保存代码行。看看NSString中添加的UIKit。您可以在要绘制的字符串上调用sizeWithFont:,然后使用x=CGRectGetMinX(rect)+(CGRectGetWidth(rect)-textSize.width)/2.0将其居中。重复Y coord的步骤。