2011-08-06 35 views
9

Trong ứng dụng iOS của tôi, tôi đang cố gắng vẽ đường cong bằng cách sử dụng CoreGraphics. Bản vẽ hoạt động tốt, nhưng trên màn hình hiển thị võng mạc, hình ảnh được vẽ bằng cách sử dụng cùng độ phân giải và không nhận được pixel tăng gấp đôi. Kết quả là một hình ảnh pixelated.Vẽ trên màn hình võng mạc bằng cách sử dụng CoreGraphics - Hình ảnh pixelated

Tôi vẽ sử dụng các chức năng sau:

- (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 
} 

Lời khuyên tôi đã tìm thấy là use the scaleFactor property, hoặc CGContextSetShouldAntialias() function, nhưng không ai trong số những giúp cho đến nay. (Mặc dù tôi có thể đã sử dụng chúng không đúng cách.)

Bất kỳ trợ giúp nào cũng sẽ được đánh giá cao.

Trả lời

27

Bạn cần phải thay UIGraphicsBeginImageContext với

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

UIGraphicsBeginImageContextWithOptions đã được giới thiệu trong phần mềm 4.x. Nếu bạn định chạy mã này trên các thiết bị 3.x, bạn cần phải liên kết khung UIKit yếu. Nếu mục tiêu triển khai của bạn là 4.x hoặc cao hơn, bạn chỉ có thể sử dụng UIGraphicsBeginImageContextWithOptions mà không cần kiểm tra thêm.

+0

Nó hoạt động hoàn hảo! Cảm ơn bạn! – antalkerekes

Các vấn đề liên quan