5

我有屏蔽图像的问题。我做游戏“拼图”并且必须制作自定义图像。我发现并尝试了 2 种自定义裁剪方式:

  1. 使用CALayer.mask属性。
  2. 使用UIImage.mask属性。

在第一个选项中,我创建我的自定义路径,然后将其分配给CAShapeLayer.path属性,然后分配CAShapeLayerCALayer.mask属性。最后我有自定义裁剪图像。在第二个选项中,我首先使用使用CGImageMaskCreate()方法(我使用以前创建的拼图黑色蒙版图像),然后CGContextClipToMask(). 在任一选项中,我都遇到了性能问题(主要是当我将图像裁剪成 16 个拼图并拖入屏幕时)。

是否有任何其他方法可以自定义方式裁剪图像。(我不知道如何解决性能问题)。提前致谢。

4

3 回答 3

6

有很多 UIImage 类别可供您使用。给我一点时间,我会在这里发布一些链接:

于 2011-05-04T08:27:41.377 回答
0

试试这个:

-(UIImage *)imageByCropping:(UIImage *)imageToCrop toRect:(CGRect)rect
{
    CGImageRef imageRef = CGImageCreateWithImageInRect([imageToCrop CGImage], rect);

    UIImage *cropped = [UIImage imageWithCGImage:imageRef];
    CGImageRelease(imageRef);

    return cropped;
}

...

UIImage *temp_image = [self imageByCropping:original_image toRect:clipping_rectangle];
于 2011-05-04T16:09:08.897 回答
0

也许您应该考虑在具有 alpha 背景的新图像中绘制图像,并过度绘制当前背景。我的意思是:拼图块内的所有像素:正常颜色,拼图块外的所有像素=透明。然后尝试将其混合到新背景或过度绘制它。

只是我的2美分。:)

于 2012-03-12T21:18:10.167 回答