视网膜显示的别名+核心图形

时间:2012-01-04 10:44:49

标签: core-graphics zoom alias pixel retina-display

我想使用核心图形的别名绘图功能 随着能力的膨胀 所以像素将在1600%或更高时看得非常清晰 在ipad 1(没有视网膜显示器)中一切正常

当我在iphone4S / 4上运行相同的代码时,我看不到别名绘图在

按照此帖CoreGraphics for retina display中的说明操作,但图片仍然不是“别名”

这是我的问题的屏幕上限 - http://farm8.staticflickr.com/7161/6634020573_19d8b3549f_o.jpg

这里是我如何进行下面的屏幕截图 - (子类UIView并将绘图代码放在drawRect中:)

- (void)drawRect:(CGRect)rect
{
    //[self setNeedsDisplay];
    // Drawing code
    CGContextRef context = UIGraphicsGetCurrentContext();
    //
    CGContextSetLineWidth(context, 1.0);
    CGColorSpaceRef cs=CGColorSpaceCreateDeviceRGB();
    float cc[]={1.0,0.0,0.0,1.0};
    CGContextSetStrokeColorWithColor(context,CGColorCreate(cs, cc));
    CGContextSetShouldAntialias(context, FALSE);
    CGContextSetAllowsAntialiasing(context, FALSE);
    //
    CGContextMoveToPoint(context,10,0);
    CGContextAddLineToPoint(context, 266,256);
    CGContextStrokePath(context);

    CGContextSetShouldAntialias(context, TRUE);
    CGContextSetAllowsAntialiasing(context, TRUE);
    //
    CGContextMoveToPoint(context,-10,0);
    CGContextAddLineToPoint(context, 246,256);
    CGContextStrokePath(context);
}

然后点按两次放大

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *t=[touches anyObject];
    if([t tapCount]==2) {
        paper *p=[paperStack objectAtIndex:0];
        CGAffineTransform transform = p.transform;
        p.transform = CGAffineTransformScale(transform, 16.0f, 16.0f);

    }
}

任何帮助/提示将不胜感激, 提前谢谢你!

最好的, Kitdastudio

1 个答案:

答案 0 :(得分:0)

让视网膜显示SHARP CRISP像素

我需要放弃

CGContextMoveToPoint(context,10,0);
CGContextAddLineToPoint(context, 266,256);

相反,我需要使用一个循环来沿线添加矩形(每个1x1大)

并且它将在视网膜显示器和较旧的1x显示器中产生SHARP CRISP像素