The answer is using the [[UIScreen mainScreen] scale], and create the bitmap context accordingly. But will any drawing routine also take special care to draw on this bitmap context because now the pixels on x and y-axis have both doubled?
The solution is that we can just do a transform, and everything will be taken care of. By doing this, any drawing routine will not need to tailor to any particular size. Moving to a point at (300, 300) will be actually moving to pixel (600, 600), but the drawing can just use (300, 300) for both a regular and Retina device. The solution is:
float scaleFactor = [[UIScreen mainScreen] scale];
CGSize size = CGSizeMake(768, 768);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef context = CGBitmapContextCreate(NULL,
size.width * scaleFactor, size.height * scaleFactor,
8, size.width * scaleFactor * 4, colorSpace,
kCGImageAlphaPremultipliedFirst);
CGContextScaleCTM(context, scaleFactor, scaleFactor);
note that the last line, the CGContextScaleCTM is important. It does the work of making (300, 300) to be the actually pixel (600, 600) on a Retina device. The line that does the CGSizeMake(768, 768) is how big you'd like the bitmap context to be. It works on a regular display and is automatically scaled up for a Retina display in the code above.
Use these tips as you Ganga bhakti begin your career online. You will find that money will begin to stream in and your wallet will fatten up.Ganga music
ReplyDelete