我使用此代码创建了一个带有漂亮阴影的圆圈(我使用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;我正在构建图像)
答案 0 :(得分:13)
如果您要清除所有绘制的内容,以便拥有空白画布,请在绘制任何内容之前尝试CGContextClearRect
。
但我认为你的意思是你想要阴影,填充颜色等只适用于那个椭圆,而不是你之后绘制的东西。为此,您希望再次调用相同的状态设置方法,但使用不同的参数。例如,CGContextSetShadowWithColor
需要阴影颜色。但是如果你为该参数传递NULL
,它将禁用阴影。
另请参阅CGContextSetShadow
documentation,其中包含有关禁用阴影的所有方法的说明。选择最适合你的。
我认为你的主要问题是你没有利用Apple优秀的文档。我认为MonoTouch.net实际上将Objective-C API映射到具有相似或相同符号名称的.NET模块。因此,通过快速Google搜索,您应该能够在iPhone OS参考库中找到相应的文档。
答案 1 :(得分:1)
在我们开始绘画之前,请保存状态:
CGContextSaveGState(ctx);
然后我们完成后,将状态恢复到开头的状态:
CGContextRestoreGState(ctx);