0

我在 Illustrator 中创建了一个特殊的椭圆,我需要在我的应用程序中绘制它。我使用 Qwarkee 将其转换为核心图形代码,主要使用:

void CGPathAddCurveToPoint (CGMutablePathRef path, const CGAffineTransform *m, CGFloat cp1x, CGFloat cp1y, CGFloat cp2x, CGFloat cp2y, CGFloat x, CGFloat y);

这是代码:

CGMutablePathRef pPath_0 = CGPathCreateMutable();
CGPathMoveToPoint(pPath_0, NULL, 515.98,258.24);
CGPathAddCurveToPoint(pPath_0, NULL, 515.98,435.61,415.54,515.98,258.24,515.98);
CGPathAddCurveToPoint(pPath_0, NULL, 100.94,515.98,0.50,435.61,0.50,258.24);
CGPathAddCurveToPoint(pPath_0, NULL, 0.50,80.86,100.94,0.50,258.24,0.50);
CGPathAddCurveToPoint(pPath_0, NULL, 415.54,0.50,515.98,80.86,515.98,258.24);
CGPathCloseSubpath(pPath_0);

在此处输入图像描述

这个比例大小的椭圆的直径是 515.98。现在我想更改代码,以便无论大小如何,椭圆都会被拉伸以适合我的视图边界。端点很明显,我可以使用视图的高度和宽度来确定这一点。但是,我无法理解如何确定控制点。我是否将这些视为视图高度/视图宽度的比例?不确定我是否完全理解贝塞尔路径的数学运算,因此当视图水平或垂直拉伸时,我可以保持相同数量的曲线。

4

1 回答 1

0

我在一个物理论坛上交叉发布了这个,一个好人给了我一个很好的解决方案:

http://www.physicsforums.com/showthread.php?s=aff26efd9c911d2a8c29118f550b86fb&p=3996775#post3996775

于 2012-07-27T22:03:15.873 回答