2017-11-24 22 views
0

現在、画像を処理できるiOSアプリケーションを開発中です。 (回転、ズーム、平行移動)。私はジェスチャーを追加したuiimageviewを使っています。これは正常に動作しますが、私はまた固定サイズのいくつかのマスキング矩形を持っています。 Initial StateiOS CGAffineTransform with Masking

私のイメージを処理した後、私はマスキングの矩形の中にあるコンテンツを望みます。 また、処理された画像のマスキング矩形の4つのエッジポイントが必要です。

私は何とかポイントにimageview変換を適用しなければならないことは知っていますが、動作しません。

let points = maskView.edgePoints() 

    let translateTransform = CGAffineTransform(translationX: translationPoint.x, y: translationPoint.y) 
    let rotateTransform = CGAffineTransform(rotationAngle: CGFloat(rotationAngle)) 
    let scaleTransform = CGAffineTransform(scaleX: xScale, y: yScale) 

    let finalTransform = rotateTransform.concatenating(scaleTransform).concatenating(translateTransform) 

    let topleftPoint = points[0].applying(finalTransform) 
    let toprightPoint = points[1].applying(finalTransform) 
    let bottomleftPoint = points[2].applying(finalTransform) 
    let bottomrightPoint = points[3].applying(finalTransform) 

エッジ点の結果:Sample

TOPLEFT:(50.75、-8.75)

Topright:(63.6072332330383、-365.252863911729)

Bottomleft:(-172.064289944831、-16.7857707706489)

ボトムライト:(-159.207056711792、-373.288634682378)

しかし、Topleftは(0,0) のようなもので、Bottomleftは(40,200)のようなものでしょうか?

多分あなたは私にいくつかのヒントや役に立つリンクを与えることができます!

Thxで事前に!

+0

その黒い四角の下の部分を切り取りたいですか? –

+0

あなたは本当にバインドするためにクリップを設定することができます –

+0

私は実際に何をしようとしているのかわかりません?そしてなぜあなたは 'maskView.edgePoints'への変換を適用していますか?それに応じてあなたの黒い国境を移動しますか? –

答えて

0

問題は変換順序にあります。今すぐあなたの変換順序はRotate Scale Translateです。それはScale Rotate Translateでなければなりません。

let finalTransform = scaleTransform.concatenating(rotateTransform).concatenating(translateTransform)