2010-01-19 91 views
5

我创建一个不错的阴影圈与此代码(我用MonoTouch.net为iPhone,Objective-C的答案是精品课程的)iPhone清晰CGContext上

 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中;我正在构建图像)

回答

13

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

但我认为你的意思是说你需要阴影,填充颜色等仅适用于该椭圆,而不适用于后来绘制的东西。要做到这一点,你需要再次调用相同的状态设置方法,但使用不同的参数。例如,CGContextSetShadowWithColor需要阴影颜色。但是,如果您为该参数传递NULL,则会禁用阴影。

另请参阅CGContextSetShadow documentation,其中有关于禁用阴影的所有方法的说明。为你选择最好的一个。

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

+0

扫清我只是画了圈虽然 – 2010-01-19 00:49:32

+0

啊我误解了。编辑我的答案。 – 2010-01-19 02:07:37

1

我们开始绘制之前,保存状态:

CGContextSaveGState(ctx); 

然后我们完成后,返回状态,它是什么开头:

CGContextRestoreGState(ctx);