问题:在通过UIGraphicsGetCurrentCont ext得到的CGContextRef上画文字,在Retina设备上显示高清,
但是通过CGBitmapContextCreate得到的CGContextRef上画文字,在Retina设备上显示很模糊
但是通过CGBitmapContextCreate得到的CGContextRef上画文字,在Retina设备上显示很模糊
原理:我们必须手动处理自己使用我们的x和y的比例因子为视网膜分辨率,
CGContextRef context = UIGraphicsGetCurrentCont ext(); CGImageRef image =CGBitmapContextCreateIma ge(context); NSLog(@"width of context %i", (int)CGImageGetWidth(image)); NSLog(@"height of context %i", (int)CGImageGetHeight(image));
在新的iPad,禁用状态栏,打印结果为 2048和1536,iPad
2将显示为1024和768),实际上,ios自动处理 1点= 4个像素。
解决:
float scaleFactor = [[UIScreen mainScreen] scale];
CGSize size = CGSizeMake(768, 768);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDevice RGB();
CGContextRef context = CGBitmapContextCreate(NULL, size.width * scaleFactor, size.height * scaleFactor, 8, size.width * scaleFactor * 4, colorSpace, kCGImageAlphaPremultipli edFirst);
CGContextScaleCTM(context, scaleFactor, scaleFactor);
该示例是创建一个768×768 点的区域,新的iPad,这将是1536×1536 像素。在iPad
2,它是768×768 像素。
的一个关键因素是,CGContextScaleCTM(上下文,比例因子,比例因子)是用来调整坐标系统,使任何绘图核心图形,,如CGContextMoveToPoint等,就会自动工作,无论是标准分辨率的Retina分辨率。
一个更值得注意的是,UIGraphicsBeginImageCont将创建一个300×300 UIGraphicsBeginImageCont将创建600×600 0.0的方法调用自动给出合适的大小为标准的显示器或Retina显示屏。
本文详细解释了在iOS Retina设备上使用Core Graphics API绘制文字时出现的清晰度问题,并提供了解决方案。通过手动处理坐标比例因子,可以确保文字在Retina设备上显示高清,而不会在标准分辨率设备上显得模糊。本文还介绍了如何在不同设备上创建正确大小的上下文以适应Retina屏幕。
397

被折叠的 条评论
为什么被折叠?



