2011-03-31 30 views
0

我只是试图绘制一束线视图,取决于用户的交互。例如,用户按下一个按钮,并绘制一条线。用户按下另一个按钮,然后绘制另一条线,但第一条线仍然存在,依此类推。这看起来是一件微不足道的任务,但从我一直在阅读的内容来看,非破坏性绘图并不是非常简单。任何人都可以在正确的方向上引导我,理想情况下可以使用某些示例代码当然,任何形式的指导都是非常值得赞赏的。从字面上看,只需要在视图上绘制各种直线。预先感谢任何帮助!iOS顺序绘图不删除以前绘制

+0

它看起来像这里讨论的主题[链接](http://stackoverflow.com/questions/865636/uiview-how-do-do-non-destructive-drawing)但我真的不能说我明白解决方案代码。我没有看到新图形在现有图像上的位置。 – 2011-03-31 20:06:01

回答

1

如果你想使用Quartz Core,我相信你将不得不重新绘制整个东西...所以有人添加一条线,你画线,他们添加另一条线,你添加两条线等等在...上,但你可能能够在图层上绘图,并不断添加它们。

+0

嗯,谢谢。我真的正在寻找一种不必重新绘制整个事物的方法。在某个特定时间,视图中可能会有多达一百万行,在每次用户互动之后只会绘制40-50行。我还没有尝试过,但我猜测有一百万行不是即时的,而且真的会弄乱用户体验。 – 2011-03-31 19:08:08

+0

那么你可以尝试在图层顶部添加图层,或者使用opengl – Daniel 2011-03-31 19:09:57

+0

我有一种感觉,1000层不会太快,我试图避免opengl作为一个新手,但也许这就是我将拥有的方式最终结束。 – 2011-03-31 19:23:51

1

如果您不需要撤消功能,请尝试绘制到CGBitmapContext,然后从中创建图像并根据需要将渲染到屏幕上。这被称为“回缓冲”(或“双缓冲”或“缓冲绘图”),并且非常常见。

+0

我不认为我需要撤消能力。我确实需要每隔一段时间擦除一些行,但我只是想在它们上面画背景色的线条。我试图查找一个你正在谈论的例子,并且很难找到任何好东西(不断提出OpenGL的东西,我试图避免作为一个新手)。我是否在drawRect的开头以某种方式获取当前图像,将其复制到此CGBitmapContext中,然后将更多东西插入它,然后将其复制到屏幕上?你有没有看过这个地方的样品?叫我疯了,但似乎是我试图完成的这样一个微不足道的任务。谢谢 – 2011-03-31 19:22:53