0

基本的に、2 つの画像を持つビューを作成しています。画像 1 はビューの左上を占める直角三角形で示され、画像 2 は右下を占める直角三角形を示しています。

斜めに切った正方形を想像してください。得られた半分ごとに異なるイメージが存在します。

私はマスクについて多くのことを読んできましたが、これらの画像をマスクするために別の画像を使用したくありません。

その三角形を形成する3つのポイントを与えてから、そのように画像を切り取る方法を探しています。

これはおそらくCoregraphicsで簡単にできると思いますが、私が思うに呼び出しが足りないだけです。

どんな助けでも大歓迎です!

4

1 に答える 1

2

画像コンテキストでクリッピング パスを使用する 1 つの方法を次に示します。例は 256 x 256 の画像サイズですが、必要に応じて簡単に調整できるはずです。

UIGraphicsBeginImageContext(CGSizeMake(256, 256));
CGContextRef context = UIGraphicsGetCurrentContext();
CGAffineTransform flipVertical = CGAffineTransformMake(1, 0, 0, -1, 0, 256); 
CGContextConcatCTM(context, flipVertical);
CGContextBeginPath(context);
CGContextMoveToPoint(context, 0, 0);
CGContextAddLineToPoint(context, 0, 256);
CGContextAddLineToPoint(context, 256, 256);
CGContextClosePath(context);
CGContextSaveGState(context);
CGContextClip(context);
CGContextDrawImage(context, CGRectMake(0, 0, 256, 256), [image1 CGImage]);
CGContextRestoreGState(context);
CGContextBeginPath(context);
CGContextMoveToPoint(context, 0, 0);
CGContextAddLineToPoint(context, 256, 0);
CGContextAddLineToPoint(context, 256, 256);
CGContextClosePath(context);
CGContextSaveGState(context);
CGContextClip(context);
CGContextDrawImage(context, CGRectMake(0, 0, 256, 256), [image2 CGImage]);
CGContextRestoreGState(context);
UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); // image contains the result
UIGraphicsEndImageContext();
于 2012-12-25T22:18:15.627 に答える