CGContextRef有两个框架

时间:2011-11-02 15:21:38

标签: iphone ipad quartz-graphics cgcontext

我有两个带有点和线的框架,我想要填充。如果两个点在不同的帧上,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 个答案:

答案 0 :(得分:1)

我不知道这是不是你的问题,你的第二个循环是错误的。它取消引用dp.dPoints->end()并跳过dp.dPoints->begin()。它必须是这样的:

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