2009-10-26 27 views
7

Tôi có UIImage chứa hình ảnh với toàn bộ các ảnh nhỏ hơn trên hình ảnh (về bản chất là một dải hình ảnh chứa các hình ảnh). Tôi muốn vẽ một ảnh đơn lên vùng UIView của tôi.Vẽ các vùng được chọn của UIImage

Tôi dường như không thể tìm cách vẽ một phần của UIImage lên chế độ xem. Có phương pháp nào thực hiện điều này không?

Trả lời

8

Tôi nghĩ rằng bạn có thể tìm kiếm CGImageCreateWithImageInRect(). Bạn có thể nhận số CGImage từ số UIImage bằng số property of the same name.

EDIT: một tùy chọn khác tồn tại trong năm 2014, không có trong năm 2009, là SpriteKit. Tùy thuộc vào những gì bạn có thể làm mà cần một tờ sprite, mà có thể hữu ích.

+0

Cảm ơn, hãy thử ngay bây giờ. – rein

+0

Tốt nhất @Sixten, tôi nghĩ rằng điều này nghe có vẻ giống như những gì anh ta muốn +1 –

+0

Hoạt động hoàn hảo (trừ một số nhức đầu với CGImages được lật trong khi vẽ). Cảm ơn. – rein

2

Đúng, bạn chắc chắn có thể với Quartz.

Có hướng dẫn ở đây cho bạn thấy cách thực hiện UIImage và che giấu một phần của nó.

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

Đây là mã từ trang đó (trong trường hợp nó đi xuống vì một lý do)

- (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

Đây là công cụ tuyệt vời và tôi chắc chắn sẽ đánh dấu trang nhưng tôi không muốn tạo mặt nạ cho việc này. Tôi chỉ muốn làm một cái gì đó như: [[UIImage imageNamed: @ "myimage"] drawInRect: CGMakeRect (10,10,50,50) từRect: CGMakeRect (60,60,50,50)]; – rein

3

Tôi đã viết một loại UIImage để xử lý các trang tính ma. Kiểm tra này ra, nó có thể hữu ích http://reecon.wordpress.com/2011/11/19/uiimage-sprite-additions-objective-c/

Như đã đề cập trước đó, thể loại này căn cứ trên CGImageCreateWithImageInRect() nhưng làm cho quá trình giải nén sprites từ một tờ ma đơn xa thuận tiện hơnnhanh.

Liên kết đến trang hub git: https://github.com/r3econ/UIImage-Sprite-Additions

Bạn cũng có thể cài đặt sử dụng vỏ cacao.

Các vấn đề liên quan