0

以下是用于自由手绘的代码。但是每次我改变画笔的颜色时,新的颜色也会应用到以前的曲线上。为什么会这样。

    - (void)drawRect:(CGRect)rect
 {

for (UIBezierPath *_path in pathArray) {

    [brushPattern setStroke];

    _path.lineCapStyle = kCGLineCapRound;

    [_path stroke]; 

  }
}


-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{

isEdited=YES;

myPath=[[UIBezierPath alloc]init];

myPath.lineWidth=lineWidths;

CGPoint touchPoint = [[touches anyObject] locationInView:self];

UITouch *mytouch=[[touches allObjects] objectAtIndex:0];

[myPath moveToPoint:[mytouch locationInView:self]];

[myPath addLineToPoint:CGPointMake(touchPoint.x+1, touchPoint.y+1)];

[pathArray addObject:myPath];

[self setNeedsDisplay];


}

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{

UITouch *mytouch=[[touches allObjects] objectAtIndex:0];

[myPath addLineToPoint:[mytouch locationInView:self]];

[self setNeedsDisplay];


}
4

1 回答 1

1

因为您在 drawRect 中重绘所有路径,所有路径都使用相同的颜色 (brushPattern)。如果您有不同颜色的路径,则必须在绘图时存储使用的颜色,并将其设置为绘图循环中的笔触颜色。

我建议你的 pathArray 保存字典,每个字典都有一个路径和一个颜色,而不仅仅是保存路径。

于 2012-06-01T06:15:59.227 回答