Я пытаюсь ускорить свой код рисования. Вместо того, чтобы создавать графический контекст, рисовать в нем текущее изображение и рисовать поверх него, я пытаюсь создать контекст, используя некоторые пиксельные данные, и просто изменить их напрямую. Проблема в том, что я новичок в базовой графике и не могу создать начальное изображение. Я хочу просто сплошное красное изображение, но ничего не получаю. Вот что я использую для исходного изображения. Я предполагаю, что проблема будет такой же с остальной частью кода.
pixels = malloc(320*460*4);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef context = CGBitmapContextCreate(pixels, 320, 460, 8, 4*320, colorSpace, kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);
CGColorSpaceRelease(colorSpace);
CGContextSetRGBFillColor(context, 1.0, 0.0, 0.0, 1.0);
CGContextAddRect(context, CGRectMake(0, 0, 320, 460));
CGContextFillPath(context);
trace = [[UIImageView alloc] initWithImage:UIGraphicsGetImageFromCurrentImageContext()];
CGContextRelease(context);
Изменить: проблема оказалась в UIGraphicsGetImageFromCurrentImageContext()
. Далее следует рабочее решение, но обратите внимание, что оно не быстрее, чем гораздо более простое UIGraphicsBeginImageContext()
pixels = malloc(320*460*4);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef context = CGBitmapContextCreate(pixels, 320, 460, 8, 4*320, colorSpace, kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);
CGContextSetRGBFillColor(context, 1.0, 1.0, 1.0, 1.0);
CGContextAddRect(context, CGRectMake(0, 0, 320, 460));
CGContextFillPath(context);
CGDataProviderRef dp = CGDataProviderCreateWithData(NULL, pixels, 320*460*4, NULL);
CGImageRef img = CGImageCreate(320, 460, 8, 32, 4*320, colorSpace, kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big, dp, NULL, NO, kCGRenderingIntentDefault);
trace = [[UIImageView alloc] initWithImage:[UIImage imageWithCGImage:img]];
CGImageRelease(img);
CGColorSpaceRelease(colorSpace);
CGContextRelease(context);
-[UIScreen applicationFrame:]
: developer.apple.com/iphone/library/documentation/UIKit/ - person Peter Hosey   schedule 20.01.2010