2011-11-22 317 views
0

您好想在我嘗試着色的項目中選擇顏色。 我是新來的,所以這可能是一個愚蠢的問題。我正在使用按鈕來選擇不同的顏色。但是,當按下按鈕時,唯一發生的事情是繪製線條的最後一個像素變爲所選顏色。在第一個標籤下面的代碼刪除圖紙和第二應該改變顏色爲將要繪製的下一行...更改顏色

-(IBAction)buttonClicked:(UIButton *)sender { 
switch (sender.tag) 
{ 
    case 1: { 
     drawImage.image = nil; 
      return; 
     } 
     //lastPoint.y -= 0; 
    break; 
    case 2: { 

     UIGraphicsBeginImageContext(self.view.frame.size); 
     [drawImage.image drawInRect:CGRectMake(0, 0, drawImage.frame.size.width, drawImage.frame.size.height)]; 
     CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound); 
     CGContextSetLineWidth(UIGraphicsGetCurrentContext(), 3.0); 
     CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(), 0.0, 1.0, 2.0, 1.0); 
     CGContextMoveToPoint(UIGraphicsGetCurrentContext(), lastPoint.x, lastPoint.y); 
     CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), lastPoint.x, lastPoint.y); 
     CGContextStrokePath(UIGraphicsGetCurrentContext()); 
     CGContextFlush(UIGraphicsGetCurrentContext()); 
     drawImage.image = UIGraphicsGetImageFromCurrentImageContext(); 
     UIGraphicsEndImageContext(); 
    } 
     break; 

    default: 
     break; 
    } 
} 

回答

1

代碼:

CGContextMoveToPoint(UIGraphicsGetCurrentContext(), lastPoint.x, lastPoint.y); 
CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), lastPoint.x, lastPoint.y); 

不reallydraw線因爲行CGContextMoveToPoint的開始和行CGContextAddLineToPoint的末尾是相同的點。

幾個百分點,更少的代碼更好:

  1. 由具有目標爲每個按鈕消除switch語句。
  2. 撥打UIGraphicsGetCurrentContext()一次,並將其保存在var中,只是爲了清楚。

實施例:

CGContextRef context = UIGraphicsGetCurrentContext(); 

CGContextSetLineCap(context, kCGLineCapRound); 
CGContextSetLineWidth(context, 3.0); 
CGContextSetRGBStrokeColor(context, 0.0, 1.0, 2.0, 1.0); 
CGContextMoveToPoint(context, firstPoint.x, firstPoint.y); 
CGContextAddLineToPoint(context, lastPoint.x, lastPoint.y); 
CGContextStrokePath(context);