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 に答える