将一个CGlayer绘制到另一个CGlayer中

时间:2014-03-05 14:53:01

标签: ios core-graphics cgcontext cglayer

我使用两个CGlayers用于绘图,层1和层2,我抽入层1和上的触摸结束,我传送数据到第2层,只是明确层1,而在我的drawRect,方法,我两个层绘制到上下文。< / p>

点击了擦除按钮,我将绘图从Layer2转移到Layer1然后我擦除了layer1,但是在触摸结束时,我不将它转移到Layer2,因为我只擦除了Layer1

单击笔上如果发生擦除,我将绘图从Layer1转移到Layer2,否则之前的绘图可能会消失。

在代码中,它就像

- (void)eraserButtonClicked
{   

   CGContextRef layerContext1 = CGLayerGetContext( self.layer1);
   CGContextClearRect(layerContext1, self.bounds);
   CGContextDrawLayerInRect(layerContext1, self.bounds, self.layer2);

   CGContextRef layerContext = CGLayerGetContext(self.layer2 );
   CGContextClearRect(layerContext, self.bounds); 
}


- (void)pen1ButtonClicked
{
   CGContextRef layerContext = CGLayerGetContext(self.layer2 );
   CGContextClearRect(layerContext, self.bounds);
   CGContextDrawLayerInRect(layerContext, self.bounds, self.layer1);
   CGContextRef layerContext1 = CGLayerGetContext( self.layer1);
   CGContextClearRect(layerContext1, self.bounds);         


}

所以我用这种方式将绘图从一个图层转移到另一个图层,但是会发生什么

1)如果我画一条线,然后我点击擦除按钮,然后不擦除,如果我再次点击笔按钮而不画任何东西,如果我再次点击擦除按钮,现在当我试图擦除整个图画时消失

2)但是如果我画线,然后点击“擦除”按钮并删除一条线,然后再次切换到笔按钮并绘制一条线并再次切换到“擦除”按钮并尝试擦除,它的效果非常好。

0 个答案:

没有答案