代码之家  ›  专栏  ›  技术社区  ›  rein

绘制ui图像的选定区域

  •  7
  • rein  · 技术社区  · 16 年前

    我有一个包含一个图像的uiimage,图像上有一大堆小图片(本质上是一个包含精灵的图像条)。我想在我的视图上画一个精灵。

    我似乎找不到一种方法,只能将ui图像的一部分绘制到视图上。有没有这样的方法?

    3 回复  |  直到 16 年前
        1
  •  8
  •   Sixten Otto    11 年前

    我想你可能在找 CGImageCreateWithImageInRect() . 你可以得到一个 CGImage 从A UIImage property of the same name .

    编辑:2014年存在的另一个选项,2009年没有,是 SpriteKit . 取决于你可能正在做什么,需要一个sprite表,这可能是有用的。

        2
  •  3
  •   Rafał Sroka    12 年前

    我写了一篇 UIImage 处理sprite工作表的类别。看看这个,可能会有帮助 http://reecon.wordpress.com/2011/11/19/uiimage-sprite-additions-objective-c/

    如前所述,这一类别基于 CGImageCreateWithImageInRect() 但这使得从一个雪碧表中提取雪碧的过程远为 更方便 更快 .

    链接到Git Hub页面: https://github.com/r3econ/UIImage-Sprite-Additions

    您也可以使用可可豆安装。

        3
  •  2
  •   Cœur Gustavo Armenta    8 年前

    是的,你当然可以用石英。

    这里有一个教程向您展示如何获取一个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];
    
    }