2013-01-31 46 views
2

我已经设置了一个形状和一个图像,我想要掩饰我的形状。我把他们的中心设置在画布的中心,然后我写道:C4如何掩盖工作?

shape.mask = img; 

但是这给了我很奇怪的结果。形状似乎被蒙上了......有点......唯一出现的部分是右下角,左半部分和上半部分被切断。

我也试过两个图像,并与两个形状。这两个似乎都没有工作。
我错过了一个步骤吗?也许我试图掩盖的图像没有任何alpha值(我在这里猜测,我看到它在另一个问题中提到他们必须是具有alpha值的图像,并且他们提到了.png文件,所以这就是我用了)?

当我尝试使用两种形状时,我尝试将填充形状的alpha值设置为0.5和0.0,并将fillColor设置为零...仍然没有任何结果。

我也(在绝望的最后一次尝试)尝试了这里描述的方法:Mask a view in Objective-C,但我不是很好与自己的objective-c,所以也没有工作。

什么是掩盖在C4中的正确方法?

回答

1

你掩盖了正确的道路。

发生什么事是对象的掩码必须基于对象本身的坐标空间进行定位。将子视图添加到对象时,它会相对于对象的{0,0}进行定位。

以下代码将工作并显示2件事。

首先,掩蔽形状被定位到中心对象的,和画布的NOT中心:

s.center = CGPointMake(m.width/2,m.height/2);

其次,当触摸画布动画将触发掩模移动到画布的“中心”坐标,但您会注意到它进一步关闭。这是因为它从图像的原点来计算它的位置。

@implementation C4WorkSpace { 
    C4Image *m; 
    C4Shape *s; 
} 

-(void)setup { 
    m = [C4Image imageNamed:@"C4Sky"]; 
    s = [C4Shape ellipse:CGRectMake(0, 0, m.height, m.height)]; 

    m.center = self.canvas.center; 
    s.center = CGPointMake(m.width/2,m.height/2); 
    m.mask = s; 
    [self.canvas addImage:m]; 
} 

-(void)touchesBegan { 
    s.animationDuration = 1.0f; 
    s.center = self.canvas.center; 
} 

@end