我正在制作一个简单的 iPhone 绘图程序作为个人副项目。
我在子类 UIView 中捕获触摸事件并将实际内容渲染到单独的 CGLayer。每次渲染后,我调用 [self setNeedsLayout] 并在 drawRect: 方法中将 CGLayer 绘制到屏幕上下文。
这一切都很好,并且在绘制矩形时表现得很好。但是,我只想要一个简单的“手绘”模式,就像许多其他 iPhone 应用程序一样。
我想这样做的方法是创建一个 CGMutablePath,并且很简单:
CGMutablePathRef 路径; -(无效)触摸开始{ 路径 = CGMutablePathCreate(); } -(无效)触摸移动{ CGPathMoveToPoint(路径,NULL,x,y); CGPathAddLineToPoint(路径,NULL,x,y); } -(void)drawRect:(CGContextRef)context { CGContextBeginPath(上下文); CGContextAddPath(上下文,路径); CGContextStrokePath(上下文); }
但是,在绘制超过 1 秒后,性能会严重下降。
如果不是为了可变不透明度,我只会将每一行绘制到屏幕外的 CGLayer 中!小于 100% 的不透明度会导致屏幕上留下连接线条的点。我看过 CGContextSetBlendingMode() 但可惜我找不到答案。
谁能指出我正确的方向?其他 iPhone 应用程序能够以非常高的效率做到这一点。