iPhone清除CGContext

时间:2010-01-19 00:26:01

标签: iphone clear cgcontext

我使用此代码创建了一个带有漂亮阴影的圆圈(我使用MonoTouch.net for iPhone,Objective-C答案当然很好)

        UIGraphics.PushContext (ctx);
        SizeF shadowSize = new SizeF (0f, -3f);
        ctx.SetRGBFillColor (194f / 255f, 212f / 255f, 238f / 255f, 1f);
        ctx.SetAllowsAntialiasing (true);
        ctx.SetShadowWithColor (shadowSize, 20, new CGColor (0.9f, 0.7f));
        RectangleF area = new RectangleF (35f, 15f, 210f, 210f);
        ctx.FillEllipseInRect (area);
        UIGraphics.PopContext ();

然后我想添加一个弧线。当我这样做时,颜色和阴影等似乎都在附近?在绘制我的UIView时如何“重新开始”? (这一切都在同一个UIView;我正在构建图像)

2 个答案:

答案 0 :(得分:13)

如果您要清除所有绘制的内容,以便拥有空白画布,请在绘制任何内容之前尝试CGContextClearRect

但我认为你的意思是你想要阴影,填充颜色等只适用于那个椭圆,而不是你之后绘制的东西。为此,您希望再次调用相同的状态设置方法,但使用不同的参数。例如,CGContextSetShadowWithColor需要阴影颜色。但是如果你为该参数传递NULL,它将禁用阴影。

另请参阅CGContextSetShadow documentation,其中包含有关禁用阴影的所有方法的说明。选择最适合你的。

我认为你的主要问题是你没有利用Apple优秀的文档。我认为MonoTouch.net实际上将Objective-C API映射到具有相似或相同符号名称的.NET模块。因此,通过快速Google搜索,您应该能够在iPhone OS参考库中找到相应的文档。

答案 1 :(得分:1)

在我们开始绘画之前,请保存状态:

CGContextSaveGState(ctx);

然后我们完成后,将状态恢复到开头的状态:

CGContextRestoreGState(ctx);