Iphone CGContext:如果更改笔划颜色,则更改整个视图颜色
我使用不同的按钮在使用CGContext的UIBezierPath曲线绘制中更改笔划颜色,但在更改颜色时,先前绘制的线条也会根据最后一个笔划颜色更改颜色。但我不希望先前绘制的线条更改颜色。 感谢您的帮助。 我使用了以下代码:Iphone CGContext:如果更改笔划颜色,则更改整个视图颜色,iphone,objective-c,ios6,Iphone,Objective C,Ios6,我使用不同的按钮在使用CGContext的UIBezierPath曲线绘制中更改笔划颜色,但在更改颜色时,先前绘制的线条也会根据最后一个笔划颜色更改颜色。但我不希望先前绘制的线条更改颜色。 感谢您的帮助。 我使用了以下代码: (void)drawRect:(CGRect)rect{ if(colorwith==1){ CGContextRef bluecontext = UIGraphicsGetCurrentContext(); CGContextBeginPath(blue
(void)drawRect:(CGRect)rect{
if(colorwith==1){
CGContextRef bluecontext = UIGraphicsGetCurrentContext();
CGContextBeginPath(bluecontext); // clears any previous path
CGContextSetRGBFillColor(bluecontext, 0.2, 0.3, 0.5, .06);
CGContextSetStrokeColorWithColor(bluecontext, [UIColor blueColor].CGColor);
CGContextStrokePath(bluecontext); // draw blue line
for(UIBezierPath *_tempPath in _arrayForOperationPath)
{
[_tempPath strokeWithBlendMode:kCGBlendModeNormal alpha:1.0];
}
//[[UIColor blackColor]setStroke];
}
else if (colorwith==2){
CGContextRef bluecontextt = UIGraphicsGetCurrentContext();
CGContextBeginPath(bluecontextt); // clears any previous path
CGContextSetRGBFillColor(bluecontextt, 0.2, 0.8, 0.7, .01);
CGContextSetStrokeColorWithColor(bluecontextt, [UIColor redColor].CGColor);
CGContextStrokePath(bluecontextt);
// [[UIColor redColor]setStroke];
for(UIBezierPath *_tempPath in _arrayForOperationPath)
{
[_tempPath strokeWithBlendMode:kCGBlendModeNormal alpha:1.0];
}
//[[UIColor blackColor]setStroke];
}
}在
CGContextRef bluecontext=UIGraphicsGetCurrentContext()之后代码>添加CGContextSaveGState(bluecontext)代码>和CGContextRestoreGState(bluecontext)代码>绘制贝塞尔路径后
你的问题是每次上下文更新时都会调用drawRect…所以每次你绘制一些东西时。您在这里设置了线颜色,但是之前绘制的路径不记得RGB..只记得alpha(如果我记得正确的话)
使用CGContextSaveGState
和CGContextRestoreGState
保存上一个上下文,绘制,然后恢复上下文原样加上已绘制的图形