如果我在放大后绘制它,UIImageView会变得模糊

时间:2013-01-25 19:06:59

标签: ios uiimageview uiimage quartz-graphics uipinchgesturerecognizer

我有UIImageView显示图片。

我注册了一个缩放手势来放大/缩小并在其上绘制一个平移手势(我有充分的理由使用平移手势,而不是touchMoved)

以下是捏合目标:

    - (void)pinchGestureActionOnSubject:(UIPinchGestureRecognizer *)pinch
    {

          if([(UIPinchGestureRecognizer*)pinch state] == UIGestureRecognizerStateBegan)
          {
                _lastScale = 1.0;
          }

          CGFloat scale = 1.0 - (_lastScale - [(UIPinchGestureRecognizer*)pinch scale]);

          CGAffineTransform currentTransform = self.imageViewSubject.transform;
          CGAffineTransform newTransform = CGAffineTransformScale(currentTransform, scale, scale);

          [self.imageViewSubject setTransform:newTransform];

          _lastScale = [(UIPinchGestureRecognizer*)pinch scale];
    }

这是pan目标:

    -(void) panOnSubjectForDrawing:(id)sender
    {

         if([sender numberOfTouches] > 0)
         { 

              CGPoint currentPoint = [sender locationOfTouch:0 inView:self.imageViewSubject];

              if(lastPoint.x == 0 || lastPoint.y == 0)
              {
                  lastPoint.x = currentPoint.x;
                  lastPoint.y = currentPoint.y;    
              }

              UIGraphicsBeginImageContext(self.imageViewSubject.bounds.size);

              CGContextRef context = UIGraphicsGetCurrentContext();

              [self.imageViewSubject.image drawInRect:CGRectMake(0, 0, self.imageViewSubject.bounds.size.width, self.imageViewSubject.bounds.size.height)  blendMode:kCGBlendModeNormal alpha:1.0];

              CGContextSetLineCap(context, kCGLineCapRound);

              CGContextSetLineWidth(context, 10); // Epaisseur du trait

              CGContextSetBlendMode(UIGraphicsGetCurrentContext(), kCGBlendModeClear); // Transparent

              CGContextMoveToPoint(context, lastPoint.x, lastPoint.y);
              CGContextAddLineToPoint(context, currentPoint.x, currentPoint.y);
              CGContextStrokePath(context);

              self.imageViewSubject.image = UIGraphicsGetImageFromCurrentImageContext();

              UIGraphicsEndImageContext();
              lastPoint = currentPoint;

       }


   }

问题是,如果我在放大后绘制,图像会变得模糊。但如果我在没有缩放的情况下绘制,图像就会保持完整。

我听说可能是因为我的框架必须是整数,所以我补充说:

self.imageViewSubjectframe = CGRectIntegral(self.imageViewSubject.frame);
在我画画之前,它是最糟糕的,更加模糊。

有什么想法吗?

0 个答案:

没有答案