2

私はUIBezeirPathを使用しています.drawRectメソッドでは、以下の方法でパス(行)のsetStrokeにハードコーディングされた色を取得しました.

- (void)drawRect:(CGRect)rect
{ 
 [[UIColor redColor] setFill];
 for (UIBezierPath *_path in pathArray) 
 {
      [_path strokeWithBlendMode:kCGBlendModeNormal alpha:1.0];

  }
}

これはうまく機能し、私が描くパス(線)に赤い色を設定します。色オプションから別の色を選択すると、青色を選択したとします。パスを描き始めると、色は青色ですが、以前に描いた赤い線も青色に変わります。それが問題全体です

以下は私のコードで、さまざまな色を設定する方法です

- (void)drawRect:(CGRect)rect
{
if(changecolor)
    {
        AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
        strokeColor = appDelegate.color;
        NSLog(@"%@",strokeColor);

        SEL blackSel = NSSelectorFromString(strokeColor);
        UIColor* tColor = nil;
        if ([UIColor respondsToSelector: blackSel])
            tColor  = [UIColor performSelector:blackSel];
        [tColor setStroke];
        [tColor setFill];       
    }
    else
    {    
        [[UIColor redColor] setStroke];
        [[UIColor redColor] setFill];

        for (UIBezierPath *_path in pathArray) 
        {
            [_path strokeWithBlendMode:kCGBlendModeNormal alpha:1.0];

        }
   }
}

私がこれを正しい方法で行っているのか、それとも何かが欠けているのか. 私を助けてください

よろしくランジット

4

1 に答える 1

5

1 つの配列で現在の色を維持し、別の配列で bezierpaths を維持するだけです。次に、次のように描画します。

    int q=0;

for (UIBezierPath *_path in pathArray) 
{
UIColor *_color = [colorArray objectAtIndex:q];
[_color setStroke];
[_path strokeWithBlendMode:kCGBlendModeNormal alpha:1.0]; 
q++;
}
于 2012-07-17T07:05:49.403 に答える