2011-05-04 49 views
5

我有掩盖图像的问题。我做游戏“拼图”,并且必须制作自定义图像。我发现并试图定制种植的2路:iOS中的自定义图像蒙版

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

在第一个选项创建我的自定义路径,然后将其分配给CAShapeLayer.path财产,然后分配给CAShapeLayer财产CALayer.mask。最后我有自定义裁剪图像。 在第二个选项中,我首先使用CGImageMaskCreate()方法(我使用之前创建的黑色面具拼图图像),然后使用CGContextClipToMask()。 在任何选项中我都有性能问题(主要是当我将图像裁剪成16个谜题并拖动到屏幕上时)。

是否有任何其他方法以自定义的方式裁剪图像。 (我不知道如何解决性能问题)。 在此先感谢。

+0

你问的是不裁剪,它被称为掩蔽。你已经多次声明你想掩盖非矩形区域;裁剪几乎总是指矩形区域。您可能需要相应地调整问题。 – 2012-05-04 13:34:14

+0

是的,你说得对。 – akozin 2012-06-10 18:40:53

回答

7
+0

感谢您的回答,Tim van Elsloo。但是这个链接包含了关于裁剪矩形图像的手册。但我需要一个习惯。不是矩形。像这样:http://imageshack.us/f/856/hard131.png – akozin 2011-05-04 10:42:43

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]; 
+0

感谢您的回答,马丁。但是你的源代码只能裁剪矩形区域。但我不需要它。我需要将矩形图像裁剪成这个:http://imageshack.us/f/856/hard131.png。 – akozin 2011-05-05 07:35:08

0

也许你应该考虑在alpha背景的新图像中绘制图像并透视当前背景。我的意思是:拼图块内的所有像素:正常颜色,拼图块外的所有像素=透明。然后尝试将其融入新的背景或透支。

只是我2美分。 :)