2009-10-26 3 views
7

У меня есть UIImage, содержащий изображение со всей связью меньших изображений на изображении (по существу полоса изображений, содержащая спрайты). Я хотел бы нарисовать один спрайт на область моего UIView.Нарисуйте выделенные области UIImage

Я не могу найти способ нарисовать только часть UIImage на вид. Есть ли способ, который это делает?

ответ

8

Я думаю, что вы можете искать CGImageCreateWithImageInRect(). Вы можете получить CGImage от UIImage с property of the same name.

EDIT: другой вариант, который существует в 2014 году, который не был в 2009 году, составляет SpriteKit. В зависимости от того, что вы можете делать, для этого нужен лист спрайта, который может быть полезен.

+0

Спасибо, попробовав это сейчас. – rein

+0

Good one @Sixten, я думаю, что это больше похоже на то, что он хотел +1 –

+0

Прекрасно работает (минус несколько головных болей, когда CGImages переворачиваются во время рисования). Благодарю. – rein

2

Да, вы уверены, что с кварцем.

Здесь есть учебник, в котором показано, как взять UIImage и замаскировать его часть.

http://iosdevelopertips.com/cocoa/how-to-mask-an-image.html

Вот код с этой страницы (упаковывают она идет вниз по какой-то причине)

- (UIImage*) maskImage:(UIImage *)image withMask:(UIImage *)maskImage { 

    CGImageRef maskRef = maskImage.CGImage; 

    CGImageRef mask = CGImageMaskCreate(CGImageGetWidth(maskRef), 
     CGImageGetHeight(maskRef), 
     CGImageGetBitsPerComponent(maskRef), 
     CGImageGetBitsPerPixel(maskRef), 
     CGImageGetBytesPerRow(maskRef), 
     CGImageGetDataProvider(maskRef), NULL, false); 

    CGImageRef masked = CGImageCreateWithMask([image CGImage], mask); 
    return [UIImage imageWithCGImage:masked]; 

} 
+0

Это замечательный материал, и я обязательно добавлю его в закладки, но я не хочу создавать маску для этого. Я просто хочу сделать что-то вроде: [[UIImage imageNamed: @ "myimage"] drawInRect: CGMakeRect (10,10,50,50) fromRect: CGMakeRect (60,60,50,50)]; – rein

3

Я написал категорию UIImage для обработки листов спрайтов. Проверьте это, это может быть полезно http://reecon.wordpress.com/2011/11/19/uiimage-sprite-additions-objective-c/

Как отмечалось ранее, эта категория баз на CGImageCreateWithImageInRect(), но делает процесс извлечения спрайтов из одного спрайта листа до более удобной и быстрее.

Ссылка на страницу хаба мерзавца: https://github.com/r3econ/UIImage-Sprite-Additions

Вы можете также установить с помощью стручков какао.

 Смежные вопросы

  • Нет связанных вопросов^_^