【问题标题】:Erasing is not working擦除不起作用
【发布时间】:2011-12-21 12:45:43
【问题描述】:

我根据需要绘制线条和任何形状,但在擦除时不起作用,

为了绘图,我使用了以下代码

在这段代码中我使用石英芯绘制

previousPoint1 = [touch previousLocationInView:m_img];
                previousPoint2 = [touch previousLocationInView:m_img];
                currentPoint = [touch locationInView:m_img];


                //
                previousPoint2 = previousPoint1;
                previousPoint1 = [touch previousLocationInView:m_img];
                currentPoint = [touch locationInView:m_img];
                // calculate mid point
                CGPoint mid1 = [self midPoint:previousPoint1 :previousPoint2];
                CGPoint mid2 =[self midPoint:currentPoint :previousPoint1];
                UIGraphicsBeginImageContext(m_img.frame.size);
                [m_img.image drawInRect:CGRectMake(0, 0, m_img.frame.size.width, m_img.frame.size.height)];
                CGContextRef context = UIGraphicsGetCurrentContext();
                CGContextMoveToPoint(context, mid1.x, mid1.y);
                // Use QuadCurve is the key
                CGContextAddQuadCurveToPoint(context, previousPoint1.x, previousPoint1.y, mid2.x, mid2.y); 
                CGBitmapContextGetColorSpace(context);   



                //CGContextSetStrokeColor(<#CGContextRef context#>, <#const CGFloat *components#>)
                CGContextSetStrokeColorWithColor(context, color.CGColor);
                CGContextSetLineCap(context, kCGLineCapRound);
                CGContextSetLineWidth(context,m_width);
                CGContextStrokePath(context);
                m_img.image = UIGraphicsGetImageFromCurrentImageContext();
                UIGraphicsEndImageContext();

为了擦除绘图,我使用了以下代码

            m_widthString=[userdefault valueForKey:@"EraserWidth"];  
            m_width=[m_widthString floatValue];
            previousPoint1 = [touch previousLocationInView:m_img];
            previousPoint2 = [touch previousLocationInView:m_img];
            currentPoint = [touch locationInView:m_img];
            previousPoint2 = previousPoint1;
            previousPoint1 = [touch previousLocationInView:m_img];
            currentPoint = [touch locationInView:m_img];
            // calculate mid point
            CGPoint mid1 = [self midPoint:previousPoint1 :previousPoint2]; 
            CGPoint mid2 =[self midPoint:currentPoint :previousPoint1];
            UIGraphicsBeginImageContext(m_img.frame.size);
            [m_img.image drawInRect:CGRectMake(0, 0, m_img.frame.size.width, m_img.frame.size.height)];

            CGContextRef context = UIGraphicsGetCurrentContext();
            CGContextSetStrokeColorWithColor(context, [[UIColor clearColor] CGColor]);
            CGContextSetFillColorWithColor(context, [[UIColor clearColor] CGColor]);
            CGContextSetBlendMode(context, kCGBlendModeClear);
            CGContextSetLineCap(context, kCGLineCapRound);
            CGContextSetLineWidth(context,m_width);
            CGContextMoveToPoint(context, mid1.x, mid1.y);
            CGContextAddQuadCurveToPoint(context, previousPoint1.x, previousPoint1.y, mid2.x, mid2.y); 
            CGContextDrawPath(context, kCGPathFillStroke);
            m_img.image = UIGraphicsGetImageFromCurrentImageContext();
            UIGraphicsEndImageContext();

在擦除时我更改了混合模式,即使它不起作用

但不工作请帮助我

【问题讨论】:

    标签: ios-simulator ios5


    【解决方案1】:

    对于擦除你必须采取 trasferent 图像视图 并使用 CGContextSetBlendMode(context, kCGBlendModeClear); 它现在对我有用...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-03
      • 1970-01-01
      • 1970-01-01
      • 2012-03-06
      • 1970-01-01
      相关资源
      最近更新 更多