Xcode Iphone Touch пунктирная живопись - PullRequest
4 голосов
/ 19 февраля 2011

Привет всем, я француз, так что заговори меня на мой английский. Моя проблема в том, что я хочу нарисовать пальцем на iphone точечный рисунок вот так -----------, не линия, а нарисовать. У меня есть:

CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound); //kCGLineCapSquare, kCGLineCapButt, kCGLineCapRound
CGContextSetLineWidth(UIGraphicsGetCurrentContext(), 10.0); // for size
CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(), 0.0, 1.0, 0.0, 1.0); //values for R, G, B, and Alpha
CGContextBeginPath(UIGraphicsGetCurrentContext());
CGContextMoveToPoint(UIGraphicsGetCurrentContext(), lastPoint.x, lastPoint.y);
CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), currentPoint.x, currentPoint.y);
CGContextStrokePath(UIGraphicsGetCurrentContext());
drawImage.image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

Какой код для "пунктирной", пожалуйста.

Ответы [ 3 ]

4 голосов
/ 19 февраля 2011

CGContextSetLineDash

http://developer.apple.com/library/mac/#documentation/GraphicsImaging/Reference/CGContext/Reference/reference.html%23//apple_ref/c/func/CGContextSetLineDash

Пример:

CGFloat dashes[] = { 1, 1 };
CGContextSetLineDash( context, 0.0, dashes, 2 );

Или просто откройте образец QuartzDemo в Xcode и посмотрите файл QuartzLines.m(Класс QuartzDashView).

Вы должны действительно прочитать документацию (см. Уже упомянутую ссылку).

2 голосов
/ 14 марта 2011

Ваша проблема в том, что вы не ссылались на контекст перед тем, как сделать это: CGContextSetLineDash (context, 0.0, dashes, 2);

Вам нужно сделать следующее: CGContextRef context = UIGraphicsGetCurrentContext(); затем заменить все ваши UIGraphicsGetC ...звонки с контекстом, чтобы все равно ускорить его.

Примером такой книги является книга Deitel для iPhone, основанная на приложениях.

FightingS

0 голосов
/ 01 сентября 2016

Смотрите отличную страницу о роли свойств линии! https://horseshoe7.wordpress.com/2014/07/16/core-graphics-line-drawing-explained/

Согласно приведенной выше странице, здесь приведен код для строки «точка», такой как (....)

// should
CGContextSetLineCap(context, kCGLineCapRound);

// please see the role of line properties why the first should be 0 and the second should be the doulbe of the given line width
CGFloat dash[] = {0, lineWidth*2};

// the second value (0) means the span between sets of dot patterns defined by dash array
CGContextSetLineDash(context, 0, dash, 2);
...