iPhone-试图了解CGContext中的UIBezier

| 当我有一个UIBezier并在使用drawRect的视图上进行描边时,我看到bezier是一种volatile,我的意思是,它实际上并没有在任何地方绘制。相反,它就像是写在一种与我在该视图上看到的缓冲区相对应的缓冲区中。我的意思是,如果我再次使用[self setNeedsDisplay]调用drawRect,贝塞尔曲线将消失,我可以编写其他东西。 另一方面,如果我在CGContext上使用
CGContextStrokePath(ctx);
我实际上是在该上下文中编写该行,无法擦除它,并且如果我再次调用同一方法,它将覆盖现在已经绘制了一行的上下文。 但是,当我使用UIBezier命令在CGContext上书写时会发生什么? 我的意思是,如果我做类似的事情
UIGraphicsPushContext(ctx);
CGContextSaveGState(ctx);
CGContextTranslateCTM(ctx, 0, height);
CGContextScaleCTM(ctx, 1.0, -1.0);
[myBezier stroke];
CGContextRestoreGState(ctx);
UIGraphicsPopContext();
这行是永久写入ctx还是像以前一样易变?该文档不包含有关该文档的信息,并且一如既往地模糊。 谢谢     
已邀请:
        每当调用视图的ѭ2时,UIKit都会设置一个图形上下文供您绘制。这就是为什么贝塞尔曲线路径不是永久的;每次需要显示视图时,都会有一个新的上下文,您的路径会被吸引到其中。因此,每次通过
drawRect:
时,您都可以决定不绘制特定路径,并且不会显示该路径。 一旦将路径添加到上下文中,就无法删除它,但是下次刷新视图时,将有一个几乎没有内容的新上下文。如果创建自己的图形上下文,则无论输入到其中都是“永久”,它都会在上下文的整个生命周期中存在。 上下文基本上由绘制指令组成,这些指令将产生一个“图片”。这是模糊的,因为上下文的目的地(将要绘制图片的地方)可以是不同的东西:图像文件,设备屏幕的一部分甚至可能是一张纸。一旦充满了绘图指令,上下文就会渲染到其目的地。 对于您的视图绘图,UIKit会为您设置该上下文并调用您的“ 2”。这里有一定程度的间接引用-您永远不会真正地“绘制到视图中”,而总是在上下文中。您的视图实质上保留并代表了屏幕的一部分。 UIKit询问您要在该部分中输入什么内容,并提供图形上下文,以便您可以传达该信息。然后,它获取充满指令的上下文,将其转换为像素数据,并将其绘制在视图表示的区域中。     
        
UIBezierPath
是一类课程,包含一系列线条/曲线以及有关如何绘制它们的说明。当您绘制贝塞尔曲线路径时,它实际上与Quartz中的任何其他绘制函数具有相同的作用。上下文的内容将在上下文的生存期内保持不变(对于位图上下文,这是内存中位图的生存期;对于视图上下文,则是“直到需要重绘视图为止”。 \“)     

要回复问题请先登录注册