2

シェイプをマスクしたいシェイプとイメージを設定しました。両方の中心をキャンバスの中心に設定してから、次のように書きました。

shape.mask = img;

しかし、これは私に非常に奇妙な結果をもたらします。形状がマスクされているように見えます... 一種の... 表示される唯一の部分は右下隅で、左半分と上半分が切り取られています。

また、2 つの画像と 2 つの形状で試しました。どちらも機能していないようです。
手順がありませんか?おそらく、私がマスクしようとしている画像にはアルファ値がありません(ここで推測していますが、別の質問で、アルファ値を持つ画像でなければならず、.pngファイルについて言及しているのを見ました。私が使った)?

2 つの形状で試したとき、マスクしたい形状の塗りつぶしのアルファ値を 0.5 と 0.0 に設定し、fillColor を Nil に設定するだけでした... まだ何もありません。

私も(必死の最後の試みで)ここで説明されている方法を試しました:Objective-Cでビューをマスクしますが、objective-c自体はあまり得意ではないので、うまくいきませんでした。

C4でマスクする正しい方法は何ですか?

4

1 に答える 1

1

あなたは正しい方法でマスキングしています。

何が起こっているかというと、オブジェクト自体の座標空間に基づいてオブジェクトのマスクを配置する必要があります。サブビューをオブジェクトに追加すると、オブジェクトの {0,0} を基準にして配置されます。

次のコードは機能し、2 つのことを示します。

最初に、マスキング シェイプがキャンバスの中心ではなく、オブジェクトの中心に配置されます。

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
于 2013-01-31T18:49:06.840 に答える