首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >掩蔽在C4中是如何工作的?

掩蔽在C4中是如何工作的?
EN

Stack Overflow用户
提问于 2013-01-31 18:41:41
回答 1查看 38关注 0票数 2

我已经设置了一个形状和一个图像,我想用它们来遮罩我的形状。我将它们的两个中心都设置在画布的中心,然后我写道:

代码语言:javascript
复制
shape.mask = img;

但这给了我非常奇怪的结果。该形状似乎已被遮罩...有点..。唯一显示的部分是右下角,左半部分和上半部分被切断。

我还尝试了两个图像和两个形状。两种方法似乎都不管用。

我是不是漏掉了一步?也许我试图用来遮罩的图像没有任何Alpha值(我猜在这里,我在另一个问题中看到它必须是具有Alpha值的图像,并且他们提到了.png文件,所以这就是我使用的)?

当我尝试两个形状时,我尝试将我想要遮罩的形状的填充的Alpha值设置为0.5和0.0,并将fillColor设置为Nil…还是一无所获。

我也(在绝望的最后一次尝试中)尝试了这里描述的方法:Mask a view in Objective-C,但我不太擅长使用objective-c本身,所以这也不起作用。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-01 02:49:07

你掩饰的方式是对的。

实际情况是,对象的蒙版必须基于对象本身的坐标空间进行定位。向对象添加子视图时,它相对于对象的{0,0}进行定位。

首先,遮罩形状定位在object的中心,而不是画布的中心:

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

其次,当你触摸画布时,动画会触发遮罩移动到画布的“中心”坐标,但你会注意到它走得更远。这是因为它从图像的原点开始计算其位置。

代码语言:javascript
复制
@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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14623814

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档