Domanda

Sto lavorando con un'app di disegno in cui sorgono i clayers e poi sorgono il contesto di Grahics, ma il disegno è sfocato.

Ecco il mio codice

- (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);
}
.

Ottengo colpi di blurr con questo codice, secondo docs, ogni volta che creiamo il clayer con graphicscontext, dicono che fornirà la risoluzione del dispositivo, ma allora perché sto ottenendo linee sfocate.

Ecco l'immagine delle linee sfocate Inserisci Descrizione dell'immagine qui

Saluti Ranjit

È stato utile?

Soluzione

Sostituisci questo nel tuo codice in cui crei il tuo clayer:

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;
}
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top