UIImage vs NSImage: рисование изображения без экрана в iOS
В mac osx (cocoa) очень просто сделать пустое изображение определенного размера и отвлечь его от экрана:
NSImage* image = [[NSImage alloc] initWithSize:NSMakeSize(64,64)];
[image lockFocus];
/* drawing code here */
[image unlockFocus];
Однако, в iOS (cocoa touch), похоже, для UIImage не эквивалентны вызовы. Я хочу использовать UIImage (или какой-либо другой эквивалентный класс), чтобы сделать то же самое. То есть, я хочу сделать явно размер, первоначально пустое изображение, на которое я могу рисовать, используя вызовы типа UIRectFill(...)
и [UIBezierPath stroke]
.
Как мне это сделать?
Ответы
Ответ 1
Здесь нужна CoreGraphics, поскольку UIImage не имеет функций высокого уровня, как то, что вы объяснили.
UIGraphicsBeginImageContext(CGSizeMake(64,64));
CGContextRef context = UIGraphicsGetCurrentContext();
// drawing code here (using context)
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
Ответ 2
Вы можете сделать это следующим образом:
UIGraphicsBeginImageContext(CGSizeMake(64, 64));
//Drawing code here
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
Вот ссылка Apple Графика и чертеж.
Ответ 3
Что-то вроде этого:
UIGraphicsBeginImageContextWithOptions(mySize, NO, 0.0f);
CGContextRef context = UIGraphicsGetCurrentContext();
UIGraphicsPushContext(context);
[myImage drawInRect:myImageRect];
[myText drawAtPoint:myOrigin withFont:myFont];
UIGraphicsPopContext();
UIImage *myNewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();