[iPhone] CGAffineTransform 画像を回転、移動、反転させる (Objective-C)

画像を移動、回転、反転、拡大するために CGAffineTransform を使います。これはObjective-C言語です。Swiftのケースはこちらです。
 

Objective-C
Xcode 9.4

 

CGAffineTransform

 アフィン・マトリクス変換を生成:

  1. CGAffineTransformMake
    • 組み合わせたアフィン変換を作成
  2. CGAffineTransformMakeRotation
    • 画像を回転させるアフィン変換を作成
  3. CGAffineTransformMakeScale
    • 画像を拡大・縮小させるアフィン変換を作成
  4. CGAffineTransformMakeTranslation
    • 画像を移動させるアフィン変換を作成

 アフィン変換の変更:

  1. CGAffineTransformTranslate
    • アフィン変換された画像の移動量を変更
  2. CGAffineTransformScale
    • アフィン変換された画像の拡大・縮小率を変更
  3. CGAffineTransformRotate
    • アフィン変換された画像の回転を変更
  4. CGAffineTransformInvert
    • アフィン変換された画像のマトリクスを反転
  5. CGAffineTransformConcat
    • アフィン変換された画像のアフィン変換を組み合わせる

 

CGAffineTransformMakeTranslation は新しくアフィン変換を作成するのに対して
CGAffineTransformTranslate は既にあるCGAffineTransform を変更する
 
CGAffineTransformInvert は Invert とあるので反転かと思いきや、
これはマトリクスが反転するので実際は拡大していたものが縮小するというような変更のこと
拡大・縮小の引数をマイナスにすると反転します。
CGAffineTransformScale(transform, -1.0f, 1.0f);
 
アフィン変換の適用:

  1. CGPointApplyAffineTransform
    • CGPoint の位置を適用
  2. CGSizeApplyAffineTransform
    • CGSize のサイズを適用
  3. CGRectApplyAffineTransform
    • CGRect の幅と高さの適用

 アフィン変換の確認:

  1. CGAffineTransformIsIdentity
    • アフィン変換を元に戻す、リセット
  2. CGAffineTransformEqualToTransform
    • 2つのアフィン変換された画像の比較

 

サンプルコードは下のようになります。
Storyboard にボタンを配置して、ボタンを押すたびにメソッドを順番に実行するアプリです。
ViewController.h

ViewController.m

 
画像を表示するためのボタンをstoryboardに設置して紐付けする。
 
ボタンタップで画像を表示
 

 
画像を移動
CGAffineTransformMakeTranslation
 

 
矩形を適応する
CGRectApplyAffineTransform
 

 
画像を35度回転
CGAffineTransformRotate
 

 
画像の反転と移動を組み合わせる
CGAffineTransformScale
CGAffineTransformTranslate
CGAffineTransformConcat
 

 
Swiftのケースはこちらです。

画像を移動、回転、反転、拡大するために CGAffineTransform を使います。これはマトリックス、行列式を使って画像を自由自在に変...

Reference:
CGAffineTransform – Core Graphics | Apple Developer Documentation


誤字脱字、意味不明などのご意見は 謙: e-mail まで
ブックマークしておくと便利です このエントリーをはてなブックマークに追加
Twitter:


シェアする

  • このエントリーをはてなブックマークに追加

フォローする