私はSwiftのCGImageCreateWithImageInRectを使用して、タッチ位置に画像の一部のコピーを作成しています。CGImageCreateWithImageInRect切り取り
私のコードは、ユーザーが画面の端に触れ、矩形のサイズがビューフレームの外にある場合を除いて、大きく機能します。正方形を返す代わりに、ビューの外側にある量を切り捨てて長方形を返します(私が仮定します)。この変更は、コピーされたイメージの位置をシェイプするので、下のイメージと揃っていません。
画像を整列させるために正方形の形状/サイズを維持して境界を無視するにはどうすればよいですか?ここで
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
let touch = touches.first!.locationInView(mainImageView?.superview)
UIGraphicsBeginImageContext(self.view.bounds.size)
UIApplication.sharedApplication().keyWindow!.layer.renderInContext(UIGraphicsGetCurrentContext()!)
let screenshot = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
let crop = CGRectMake(touch.x - CGFloat(brushWidth)/2, touch.y - CGFloat(brushWidth)/2, CGFloat(brushWidth), CGFloat(brushWidth))
let imageRef = CGImageCreateWithImageInRect(screenshot.CGImage, crop)
if imageRef != nil {
let newImage: UIImage = UIImage(CGImage: imageRef!, scale: mainImageView.image!.scale, orientation: mainImageView.image!.imageOrientation)
let bgImage = UIImageView(image: processedImage)
bgImage.center = touch
self.view.addSubview(bgImage)
}
}
}
}
は作業それの例である:
をここに私はエッジの近くに触れたので、画像をワープそれの例です。
タッチが画像の外側で発生するかどうかを確認して、それが無視された場合は無視してください。 – BallpointBen
スマートなアイデアです。私はそれについて考えましたが、技術的にはタッチはイメージの中にあります。矩形の一部が外に落ちてしまい、エッジの近くに触れるとユーザーに作図することができます。 – user4812000
意味があります。 2番目の画像の黄色い矩形がシフトされた画像データを含む理由を知っていますか?長方形を左に動かすと、元の画像と線が並んでいることがわかります。 – BallpointBen