我要在屏幕上绘图 使用 从 PhotoLibrary 检索到的图像CGContextRef 或 UIGraphicsBeginImageContext .
我尝试了以下代码,但它没有在屏幕上绘制任何内容。我目前正在使用 cocos2d 和 box2d。怎么了?
-(void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingMediaWithInfo:(NSDictionary *)info{
newImage = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
// Dismiss UIImagePickerController and release it
[picker dismissModalViewControllerAnimated:YES];
[picker.view removeFromSuperview];
[picker release];
// Let's create a sprite now that we have an image
//CCSprite *imageFromPicker = [CCSprite spriteWithCGImage:newImage.CGImage key:@"ImageFromPicker"];
//[self addChild:imageFromPicker];
UIGraphicsBeginImageContext(CGSizeMake(320,480));
CGContextRef context = UIGraphicsGetCurrentContext();
[newImage drawAtPoint:CGPointZero];
CGContextTranslateCTM(context, 70, 370 );
CGContextScaleCTM(context, 1.0, -1.0);
//CGContextDrawImage(context, CGRectMake(0, 0, 40, 40), newImage.CGImage);
//CGImageRelease(newImage);
UIGraphicsEndImageContext();
}
最佳答案
您不会告诉 Cocoa(触摸或其他方式)突然开始绘图。它询问您的应用程序应该如何绘制某些 View ,然后您在 drawRect
中告诉它。您的 View 子类的方法。此时已经创建了图形上下文。
您的代码正在创建图形上下文并对其进行绘图,但此绘图未在屏幕上完成。
要在特定位置绘制特定图像,您通常会将图像对象分配给已经知道如何绘制图像的某个 View (例如上面代码中的 Sprite ?我不熟悉 cocos2d)。然后您将该 View 放在屏幕上(您已注释掉 addChild 调用?)。您可以将必要的转换添加到 View 对象,这将被考虑在内。
简单看一下 cocos2d 文档,CCSprite 继承自 CCNode,可以对其应用变换 - 您可以设置旋转和缩放参数。我建议你调查一下。
关于ios - 使用 Core Graphics 绘制 UIImage?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8789013/