Luaレッスン4.3「単純なグラフィックスをいくつか」和訳

原典:

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

レッスン4.3「単純なグラフィックスをいくつか」

Luaに組み込まれているグラフィックス機能は実に豊富です。詳しくは、あとのレッスンで取り上げます。ここでは、解答を強調表示する方法についてだけ説明します。方法の一つは、script_tut4.luaのpage 1.2に示したようにline3の周囲にボックスを描くことです。以下のコマンド・ラインをよく見てください。

gc:setColorRGB(20, 20, 138)

gc:setPen("medium", "smooth")

gc:drawPolyLine({0.1*w, h*(linecount-1)/(linecount+1) - 20,

0.9*w, h*(linecount-1)/(linecount+1) - 20,

0.9*w, h*(linecount-1)/(linecount+1) + 20,

0.1*w, h*(linecount-1)/(linecount+1) + 20,

0.1*w, h*(linecount-1)/(linecount+1) - 20 })

setColorRGBと一緒にグラフィックス・コンテキスト(gc)がまた登場しましたね。ほかに新しいコマンドが2つ使われています。
一つはsetPenです。太さとして"thin"、"medium"、"thick"のいずれかを指定します。スタイルとして"smooth"、"dotted"、"dashed"のいずれかを指定します。

もう一つはdrawPolyLineです。必要な多角形を描画する手段として引数にx-y座標のリスト(テーブル)が必要です。今回は5組のx-y座標で長方形を定義します。幅および高さは示したとおりです。各数値をよく見て、それぞれの意味を考えてみてください。数値を少しいじって、どうなるか確かめてください。

LuaにはdrawRectというコマンドもあって、これを使ったほうが上の処理はずっと簡単にできます。四角形の左上のx座標、同y座標、長さ、高さという4つの引数を指定するだけで済むからです。ですから今回描くボックスは下のように定義しても同じことです。

gc:drawRect(0.1*w, h*(linecount-1)/(linecount+1) - 20, 0.8*w, 40)

マーク(訳註:誰?)の言うように、四角形の高さについても四角形の幅と同じように、ページの高さ(h)の倍数として表現したほうがずっとスマートです。そうすれば、ハンドヘルド・ビューとコンピューター・ビューとを切り替えた場合でも、画面の比率が変わらないからです。では、hの何倍にすれば、今回描いた四角形の高さと同じになるでしょうか?(訳註:約0.2倍。gc:drawRect(0.1*w, h*(linecount-1)/(linecount+1) - 20, 0.8*w, 0.2*h)にすればよい)