質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

1回答

2821閲覧

(iOS)指でなぞった部分の画像を透過させたい。

bruteberry

総合スコア20

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

2クリップ

投稿2017/03/17 01:12

iOSアプリのUIImageView上で、画像の指でなぞった部分を消したい。

Swift

1import UIKit 2 3class ViewController: UIViewController { 4 var tapLocation: CGPoint = CGPoint() 5 @IBOutlet weak var imageView: UIImageView! 6 7 override func touchesBegan(_ touches: Set<UITouch>,with event: UIEvent?){ 8 // タッチイベントを取得する 9 let touch = touches.first 10 // タップした座標を取得する 11 tapLocation = touch!.location(in: self.view) 12 13 if let image = UIImage(named: "sample.jpg") { 14 print("size=", image.size) 15 16 //コンテキスト作成/取得 17 UIGraphicsBeginImageContext(image.size) 18 let context = UIGraphicsGetCurrentContext() 19 20 //コンテキストにimageをそのまま描画 21 image.draw(in: CGRect(origin: CGPoint.zero, size: image.size)) 22 23 //くり抜く矩形 24 let rect = CGRect(x: tapLocation.x, y: tapLocation.y, width: 300, height: 400) 25 print("rect=", rect) 26 27 //くり抜き 28 context!.clear(rect) 29 30 //くり抜いた画像をUIImageViewにセット 31 if let cgImage = context!.makeImage() { 32 self.imageView.image = UIImage(cgImage: cgImage) 33 } 34 35 //コンテキスト削除 36 UIGraphicsEndImageContext() 37 } 38 } 39 40 override func viewDidLoad() { 41 super.viewDidLoad() 42 // Do any additional setup after loading the view, typically from a nib. 43 if let image = UIImage(named: "sample.jpg") { 44 print("size=", image.size) 45 46 //コンテキスト作成/取得 47 UIGraphicsBeginImageContext(image.size) 48 let context = UIGraphicsGetCurrentContext() 49 50 //コンテキストにimageをそのまま描画 51 image.draw(in: CGRect(origin: CGPoint.zero, size: image.size)) 52 53 //くり抜く矩形 54 let rect = CGRect(x: 100, y: 200, width: 300, height: 400) 55 print("rect=", rect) 56 57 //くり抜き 58 context!.clear(rect) 59 60 //くり抜いた画像をUIImageViewにセット 61 if let cgImage = context!.makeImage() { 62 self.imageView.image = UIImage(cgImage: cgImage) 63 } 64 65 //コンテキスト削除 66 UIGraphicsEndImageContext() 67 } 68 } 69 70 override func didReceiveMemoryWarning() { 71 super.didReceiveMemoryWarning() 72 // Dispose of any resources that can be recreated. 73 } 74 75 76}

とりあえず、タップした部分を四角く切り取るプログラムは書けたのですが、もっとお絵かきアプリのように丸い消しゴムで消すようなものにしたいです。(できれば太さも選択できるようにしたい)
CGRectがあるならCGCircleもあるかなと思いましたが無いようです。
タッチの座標もなぜかズレてしまっています。

アドバイスを頂けるとうれしいです。よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

CoreGraphics フレームワークにて丸いペン先が用意されています。
https://developer.apple.com/documentation/coregraphics/cglinecap/round

これで「丸い消しゴム」を実現可能です。

投稿2020/11/17 22:05

errolizer

総合スコア441

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問