CGContextRef с двумя фреймами - PullRequest
0 голосов
/ 02 ноября 2011

У меня есть два кадра с точками и линиями на них, которыми я хотел бы заполнить. Будет ли CGContextRef работать с заполнением, если две точки линий находятся на разных кадрах?

Я полагаю, если бы они содержали один и тот же CGContextRef, это не имело бы значения, не так ли?

Вот идея:

    if(dp.gPoints == nil || dp.gPoints->size() < 1)
    return;
CGContextRef UserGraphBuff = UIGraphicsGetCurrentContext();
CGContextBeginPath(UserGraphBuff);
vector<CGPoint>::iterator k = dp.gPoints->begin();
CGContextMoveToPoint(UserGraphBuff, (*k).x, (*k).y);
++k;
CGContextSetStrokeColorWithColor(UserGraphBuff, [UIColor blackColor].CGColor);
while(k != dp.gPoints->end()){
    CGContextAddLineToPoint(UserGraphBuff, (*k).x, (*k).y);
    ++k;
}
vector<CGPoint>::iterator L = dp.dPoints->end();
while(L != dp.dPoints->begin()){
    CGContextAddLineToPoint(UserGraphBuff, (*L).x, (*L).y);
    --L;
}
CGContextAddLineToPoint(UserGraphBuff, (*k).x, (*k).y);
CGContextSetFillColor(UserGraphBuff, CGColorGetComponents([[UIColor greenColor] CGColor]));
CGContextClosePath(UserGraphBuff);
CGContextEOFillPath(UserGraphBuff);

Возможно, есть проблема с моим кодом, которая объясняет, почему это не работает. Любая информация была бы отличной. Спасибо.

1 Ответ

1 голос
/ 02 ноября 2011

Я не знаю, если это ваша проблема, но ваш второй цикл неправильный. Он разыменовывает dp.dPoints->end() и пропускает dp.dPoints->begin(). Это должно быть так:

while (L != do.dPoints->begin()) {
    --L;
    CGContextAddLineToPoint(UserGraphBuff, (*L).x, (*L).y);
}
...