5

我用这段代码创建了一个带有漂亮阴影的圆圈(我在 iPhone 上使用 MonoTouch.net,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 中;我正在构建图像)

4

2 回答 2

13

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

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

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

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

于 2010-01-19T00:42:43.850 回答
2

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

CGContextSaveGState(ctx);

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

CGContextRestoreGState(ctx);
于 2010-01-19T13:22:49.503 回答