Как бы я нарисовал это, используя CGContext - PullRequest
0 голосов
/ 02 марта 2010

Я хочу нарисовать это в своем представлении, чтобы нарисовать эту линию, у меня есть все, что мне нужно, чтобы сделать базовую линию, но я просто не очень хорош в рисовании, я действительно пытался это сделать, но просто не могу получить работать правильно. alt text

Ответы [ 2 ]

2 голосов
/ 03 марта 2010

Следующий код должен нарисовать синусоидальную кривую, подобную той, которую вы описываете, предполагая, что currentBounds является ограничивающим прямоугольником для вашей области для рисования в пределах:

CGContextBeginPath(context);
CGContextMoveToPoint(context, 0.0f, CGRectGetMidY(currentBounds));
CGContextAddCurveToPoint(context, currentBounds.size.width / 5.0f, CGRectGetMidY(currentBounds) - currentBounds.size.width / 5.0f, CGRectGetMidX(currentBounds) - currentBounds.size.width / 5.0f, CGRectGetMidY(currentBounds) - currentBounds.size.width / 5.0f, CGRectGetMidX(currentBounds), CGRectGetMidY(currentBounds));
CGContextAddCurveToPoint(context, CGRectGetMidX(currentBounds) + currentBounds.size.width / 5.0f, CGRectGetMidY(currentBounds) + currentBounds.size.width / 5.0f, currentBounds.size.width - currentBounds.size.width / 5.0f, CGRectGetMidY(currentBounds) + currentBounds.size.width / 5.0f, currentBounds.size.width, CGRectGetMidY(currentBounds));
CGContextClosePath(context);
CGContextStrokePath(context);
2 голосов
/ 02 марта 2010

Это кривая Безье ? Если вы знаете, где расположены две контрольные точки, используйте

CGContextMoveToPoint(context, x, y);
CGContextAddCurveToPoint(context, ...); // Cubic Bézier curve

или

CGContextMoveToPoint(context, x, y);
CGContextAddQuadCurveToPoint(context, ...); // Quadratic Bézier curve

, чтобы вставить кривую, затем используйте

CGContextStrokePath(context);

чтобы погладить кривую.

...