2012-01-09 2 views
1

Я хочу дро на экране изображение извлекается из PhotoLibrary с помощью CGContextRef или UIGraphicsBeginImageContext.Нарисуйте UIImage с основной графикой?

Я пробовал следующий код, но он ничего не рисует на экране. В настоящее время я использую 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(); 

} 

ответ

4

Вы не говорите какао (прикосновение или иное), чтобы внезапно начать рисовать. Он запрашивает ваше приложение, как он должен рисовать определенные виды, и вы рассказываете об этом в методе drawRect подкласса вида. На этом этапе уже создан графический контекст.

Ваш код создает графический контекст и рисует его, но этот рисунок не выполняется на экране.

Чтобы нарисовать определенное изображение в определенной позиции, вы обычно назначаете объект изображения некоторому виду (например, ваш спрайт в коде выше? Я не знаком с cocos2d), который уже знает, как рисовать изображение. Затем вы поместили это представление на экран (ваш прокомментированный вызов addChild?). Вы можете добавить необходимое преобразование в объект вида, и это будет учтено.

Кратко глядя на документы cocos2d, CCSprite наследует от CCNode, который может иметь примененное к нему преобразование - вы можете установить параметры вращения и масштабирования. Я предлагаю вам изучить это.

+0

И поскольку вопросник, вероятно, задается вопросом: 'UIGraphicsBeginImageContext' используется для создания изображения, а не для рисования на экране. У вас уже есть изображение, поэтому просто передайте его в виде (в частности, в иерархии представлений), который знает, как его рисовать. –

+0

Я согласен с этим все .. но его не на основе класса на основе класса, основанного на cclayer (поэтому метод drawrect не является вариантом, я думаю). Мне нужно выполнить действия (например, масштабирование изображения), поэтому я хотел получить изображение в каком-то объекте graphiccontext, чтобы я мог манипулировать им в методе рисования ?? – hemant

+0

Вы можете применить преобразование к CCSprite. Я отредактировал свой ответ. – jrturton