Question

Je travaille avec une application de dessin où je dessine à l'intérieur de CGGAYERS, puis dessinez sur le contexte des grahiques, mais je dessine de devenir floue.

Voici mon code

- (void)drawRect:(CGRect)rect
{
 CGContextRef context = UIGraphicsGetCurrentContext();//Get a reference to current context(The context to draw)
             NSLog(@"Size1%@", NSStringFromCGRect(self.bounds));

            if(self.currentDrawingLayer == nil)
            {
                self.currentDrawingLayer = CGLayerCreateWithContext(context, self.bounds.size, NULL);
            }


            CGPoint mid1 = midPoint(m_previousPoint1, m_previousPoint2);
            CGPoint mid2 = midPoint(m_currentPoint, m_previousPoint1);


            CGContextRef layerContext = CGLayerGetContext(self.currentDrawingLayer);
           // UIGraphicsBeginImageContextWithOptions(self.bounds.size,YES,0.0);

            CGContextSetLineCap(layerContext, kCGLineCapRound);
            CGContextSetBlendMode(layerContext, kCGBlendModeNormal);
            CGContextSetLineJoin(layerContext, kCGLineJoinRound);
            CGContextSetLineWidth(layerContext, self.lineWidth);
            CGContextSetStrokeColorWithColor(layerContext, self.lineColor.CGColor);
            CGContextSetShouldAntialias(layerContext, YES);
            CGContextSetAllowsAntialiasing(layerContext, YES);
            CGContextSetAlpha(layerContext, self.lineAlpha);
            CGContextSetFlatness(layerContext, 1.0f);
            CGContextBeginPath(layerContext);
            CGContextMoveToPoint(layerContext, mid1.x, mid1.y);//Position the current point
            CGContextAddQuadCurveToPoint(layerContext, m_previousPoint1.x, m_previousPoint1.y, mid2.x, mid2.y);
            CGContextStrokePath(layerContext);//paints(fills) the line along the current path.

            CGContextDrawLayerInRect(context, self.bounds, self.currentDrawingLayer);
}

Je reçois des coups de flou avec ce code, selon Docs, chaque fois que nous créons le CGlayer avec GraphicsContext, ils indiquent que cela fournira la résolution de l'appareil, mais pourquoi je reçois des lignes floues.

Voici l'image des lignes de flou Entrez la description de l'image ici

Cordialement Ranjit

Était-ce utile?

La solution

substituez cela dans votre code dans lequel vous créez votre CGlayer:

if(self.currentDrawingLayer == nil)
{
    CGFloat scale = self.contentScaleFactor;
    CGRect bounds = CGRectMake(0, 0, self.bounds.size.width * scale, self.bounds.size.height * scale);
    CGLayerRef layer = CGLayerCreateWithContext(context, bounds.size, NULL);
    CGContextRef layerContext = CGLayerGetContext(layer);
    CGContextScaleCTM(layerContext, scale, scale);
    self.currentDrawingLayer = layer;
}

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top