2012-07-13 28 views
2
繪製模糊筆畫

我在iOS設備進行繪圖工作,我有我的代碼工作,繪圖工作正常,現在我已經實現了撤銷和重做功能,但正在發生的事情是,假設我得出兩點線,然後按撤消按鈕,然後第一條線繪製得到模糊,,我不明白爲什麼發生,下面是我的撤消代碼。獲得,而在iOS的

-

(void)redrawLine 
{ 
    UIGraphicsBeginImageContext(self.bounds.size); 
    [self.layer renderInContext:UIGraphicsGetCurrentContext()]; 
    NSDictionary *lineInfo = [lineArray lastObject]; 
    curImage = (UIImage*)[lineInfo valueForKey:@"IMAGE"]; 
    UIGraphicsEndImageContext(); 
    [self setNeedsDisplayInRect:self.bounds]; 
    [self setNeedsDisplay]; 
} 



-(void)undoButtonClicked 
{ 
    if([lineArray count]>0){ 
     NSMutableArray *_line=[lineArray lastObject]; 
     [bufferArray addObject:[_line copy]]; 
     [lineArray removeLastObject]; 
     drawStep = UNDO; 
     [self redrawLine]; 
    } 

} 


- (void)drawRect:(CGRect)rect 
{ 

    switch (drawStep) { 
     case DRAW: 
     { 
      [curImage drawAtPoint:CGPointMake(0, 0)]; 
      CGPoint mid1 = midPoint(previousPoint1, previousPoint2); 
      CGPoint mid2 = midPoint(currentPoint, previousPoint1); 
      CGContextRef context = UIGraphicsGetCurrentContext(); 

      [self.layer renderInContext:context]; 
      CGContextMoveToPoint(context, mid1.x, mid1.y); 
      CGContextAddQuadCurveToPoint(context, previousPoint1.x, previousPoint1.y, mid2.x, mid2.y); 
      CGContextSetLineCap(context, kCGLineCapButt); 
      CGContextSetLineWidth(context, self.lineWidth); 
      CGContextSetStrokeColorWithColor(context, self.lineColor.CGColor); 
      CGContextSetAlpha(context, self.lineAlpha); 
      CGContextSetAllowsAntialiasing(context, YES); 
      CGContextStrokePath(context);    
      [super drawRect:rect]; 

     }   
     case UNDO: 
     { 
      [curImage drawInRect:self.bounds]; 
      break; 
     } 
} 

下面是當按下復原按鈕,發生了什麼圖像

第一個圖像是在點擊之前undobutton和第二圖像是在點擊undobutton後

Before Undo Button clicked After Undo Button Clicked

關注 Ranji t

+0

朋友你好,有任何意見 – Ranjit 2012-07-13 08:46:24

回答

4

您致電UIGraphicsBeginImageContext指定位圖的大小(以點爲單位)。 320x480全屏顯示),但在具有視網膜顯示器的設備上,您需要一個像素大小的屏幕(即640x960)。

您應該可以撥打UIGraphicsBeginImageContextWithOptions並將scale設爲0.0。從文檔:

適用於位圖的比例因子。如果您指定的值爲0.0,則縮放係數將設置爲設備主屏幕的縮放係數。

+0

嗨馬丁非常感謝,它解決了問題,如何確定比例因子?而這個問題也是在iPod touch上(這是沒有視網膜顯示)。 – Ranjit 2012-07-13 09:15:36

+0

謝謝,夥計們,我有同樣不想要的模糊,但是這個解決方案修復了它! – Borzh 2015-05-29 15:51:11

+0

巨大的幫助!沒有懷疑這個!謝謝。 – 2016-12-08 11:07:55