tips_img_040 - spoolkitamura/nyle-doc-jp GitHub Wiki

画像を回転するには?

画像自体を直接回転させるようなオプションはありませんが、
座標変換系のメソッドを使って画像を回転させることができます。

[関連情報]
translate
rotate
save

 

  • 画像を表示する(そのまま)
require 'nyle'

class Screen < Nyle::Screen
  def initialize
    super(200, 300, {bgcolor: :IVORY})
    @image = Nyle.load_image("./j1.png", {color_key: :WHITE})
  end
  def draw
    Nyle.draw_image(90, 210, @image, {pos: :CENTER})
  end
end

Screen.new.show_all
Nyle.main

[実行結果]


  • 画像を表示する(180度回転)

下記のように、translateメソッドで座標系の原点に移動させてから
さらに rotateメソッドで座標を回転させ、その新たな座標系の
原点(0, 0)に画像を表示させることで画像が回転した状態になります。

なお、saveメソッドのブロックで括っておかないと、
その他の画像や図形などにも変換された座標系が適用されてしまうので
注意が必要です。

require 'nyle'

class Screen < Nyle::Screen
  def initialize
    super(200, 300, {bgcolor: :IVORY})
    @image = Nyle.load_image("./j1.png", {color_key: :WHITE})
  end
  def draw
    Nyle.save do
      Nyle.translate(90, 210)                         # 座標系の原点を(90, 210)に移動
      Nyle.rotate(Math::PI)                           # 座標系を180度回転
      Nyle.draw_image(0, 0, @image, {pos: :CENTER})   # 新しい座標系の原点に画像を表示
    end
  end
end

Screen.new.show_all
Nyle.main

[実行結果]