2011-08-06 13 views
9

W mojej aplikacji iOS próbuję rysować krzywe za pomocą CoreGraphics. Sam rysunek działa dobrze, ale na ekranie siatkówki obraz zostanie narysowany przy użyciu tej samej rozdzielczości i nie zostanie podwojony. Rezultatem jest pikselowany obraz.Rysowanie na wyświetlaczu siatkówki za pomocą CoreGraphics - Image pixelated

jestem rysunek za pomocą następujących funkcji:

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    UITouch *touch = [touches anyObject]; 
    CGPoint currentPoint = [touch locationInView:self.canvasView]; 

    UIGraphicsBeginImageContext(self.canvasView.frame.size); 
    [canvasView.image drawInRect:self.canvasView.frame]; 
    CGContextRef ctx = UIGraphicsGetCurrentContext(); 
    CGContextSetShouldAntialias(ctx, YES); 
    CGContextSetLineCap(ctx, kCGLineCapRound); 
    CGContextSetLineWidth(ctx, 5.0); 
    CGContextSetRGBStrokeColor(ctx, 1.0, 0.0, 0.0, 1.0); 
    CGContextBeginPath(ctx); 
    CGContextMoveToPoint(ctx, lastPoint.x, lastPoint.y); 
    CGContextAddLineToPoint(ctx, currentPoint.x, currentPoint.y); 
    CGContextStrokePath(ctx); 
    canvasView.image = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    lastPoint = currentPoint; 
    // some code omitted from this example 
} 

Porady znalazłem było use the scaleFactor property, albo CGContextSetShouldAntialias() function, ale żadna z nich nie pomógł tak daleko. (Chociaż mogłem ich używać nieprawidłowo.)

Każda pomoc byłaby bardzo doceniana.

Odpowiedz

27

Trzeba zastąpić UIGraphicsBeginImageContext z

if (UIGraphicsBeginImageContextWithOptions != NULL) { 
    UIGraphicsBeginImageContextWithOptions(size, NO, 0.0); 
} else { 
    UIGraphicsBeginImageContext(size); 
} 

UIGraphicsBeginImageContextWithOptions została wprowadzona w oprogramowaniu 4.x. Jeśli masz zamiar uruchomić ten kod na urządzeniach 3.x, potrzebujesz słabego łącza do frameworka UIKit. Jeśli cel wdrożenia wynosi 4.x lub więcej, możesz po prostu użyć UIGraphicsBeginImageContextWithOptions bez żadnych dodatkowych sprawdzeń.

+0

Działa doskonale! Dziękuję Ci! – antalkerekes

Powiązane problemy