我正在iPad上进行2D图形编程,我想在用户触摸屏幕的地方绘制圆圈。这是我完成此操作的简单代码......
查看课程
-(void)setTouchPoint:(CGPoint)point
{
touchPoint.x = point.x;
touchPoint.y = point.y;
[self setNeedsDisplay];
}
-(id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if(self != nil)
{
self.backgroundColor = [UIColor whiteColor];
self.opaque = YES;
self.clearsContextBeforeDrawing = YES;
}
return self;
}
-(void)drawInContext:(CGContextRef)context
{
// Drawing with a white stroke color
CGContextSetRGBStrokeColor(context, 0.0, 0.0, 0.0, 1.0);
// And draw with a blue fill color
CGContextSetRGBFillColor(context, 0.0, 0.0, 1.0, 1.0);
// Draw them with a 2.0 stroke width so they are a bit more visible.
CGContextSetLineWidth(context, 2.0);
// Add an ellipse circumscribed in the given rect to the current path, then stroke it
CGContextAddEllipseInRect(context, CGRectMake(touchPoint.x - 10, touchPoint.y - 10, 20, 20));
CGContextStrokePath(context);
}
-(void)drawRect:(CGRect)rect
{
[self drawInContext:UIGraphicsGetCurrentContext()];
}
每次用户触摸屏幕时,视图都会被清除,导致前一个圆圈被删除,并在用户触摸的位置绘制一个新圆圈。
我尝试将self.clearsContextBeforerDrawing
属性设置为NO
,但这并没有解决它。
非常感谢您提供所有帮助!
答案 0 :(得分:1)
您可以在单独的图层上绘制圆圈,而在drawRect中只需复制它。
有关详细信息,请参阅CGLayerCreateWithContext,CGLayerGetContext,CGContextDrawLayerInRect函数。