首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iPhone clear CGContext

iPhone clear CGContext
EN

Stack Overflow用户
提问于 2010-01-19 08:26:01
回答 2查看 10.4K关注 0票数 5

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

代码语言:javascript
复制
        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中;我正在构建映像)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-01-19 08:42:44

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

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

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

我认为你的主要问题是你没有利用苹果的优秀文档。我猜想MonoTouch.net本质上是将Objective- maps映射到具有相似或相同符号名称的.NET模块。因此,通过快速的谷歌搜索,您应该能够在iPhone OS Reference Library中找到相应的文档。

票数 13
EN

Stack Overflow用户

发布于 2010-01-19 21:22:50

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

代码语言:javascript
复制
CGContextSaveGState(ctx);

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

代码语言:javascript
复制
CGContextRestoreGState(ctx);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2090217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档