Luaレッスン7.2「画像のサイズをウィンドウの大きさに合わせる」和訳

原典:

http://compasstech.com.au/TNS_Authoring/Scripting/script_tut7.html

レッスン7.2「画像をサイズをウィンドウの大きさに合わせる」 

チュートリアル1では、platform.window:widthおよびplatform.window:heightという、ウィンドウの寸法に関するコマンドを学びました。今回の例では、こうしたコマンドを使ってウィンドウの中央に画像を配置することができます。また、画像に関する同じような寸法コマンドimage.width(image)およびimage.height(image)も使えます。コードをよく見て、その働きを理解してください。

 画像をウィンドウの中央に配置する手段について特に注意してください。

local screen = platform.window --platform.windowでは長ったらしいのでscreenにする

function on.paint(gc)

     local w = screen:width() --画面の幅をwに代入

     local h = screen:height() --画面の高さをhに代入

     local imw = sute:width() --画像(sute)の幅をimwに代入

     local imh = sute:height() --画像(sute)の高さをimhに代入

     gc:drawImage(sute, (w - imw)/2, (h - imh)/2) --画面の中央に画像(sute)を描画

end

 

画像がちょうどウィンドウに収まる程度の大きさであれば、上の方法でも良いでしょう。しかし画像が大きすぎたり小さすぎたりしたらどうでしょうか? その場合は、画像のスケールを変更します。image.copy(my_image, scaleX * image.width(my_image), scaleY * image.height(my_image))というコマンドを使います。意味は文字通りです。すなわち画像のx軸、y軸のスケールを変えるコマンドです。今回の例では、縦横比はオリジナルのままにしますので、スケール・ファクターは1つだけ定義します。

 

imwおよびimhを2回使用していることに気をつけてください。最初は、オリジナルの画像(sute)に対して使い、2回目は、スケールを変更した画像(im)に対して使っています。このほうが、画像コマンドを呼び出す方法としては巧みな方法であることにも注意してください。

 

local screen = platform.window --platform.windowでは長ったらしいのでscreenにする

local sc = 0.5 --スケール・ファクター変数scに0.5を代入

function on.paint(gc)

     local w = screen:width() --画面の幅をwに代入

     local h = screen:height() --画面の高さをhに代入

     local imw = sute:width() --オリジナル画像(sute)の幅をimwに代入

     local imh = sute:height() --オリジナル画像(sute)の高さをimhに代入

     local im = sute:copy(sc * imw, sc * imh) --スケールを変更した画像をimに代入

     local imw = im:width(im) --スケール変更後の画像(im)の幅をimwに代入

     local imh = im:height(im) --スケール変更後の画像(im)の高さをimhに代入

     gc:drawImage(im, (w - imw)/2, (h - imh)/2) --スケール変更後の画像を画面中央に描画

end