コンピュータを楽しもう!!

今、自分が面白くていろいろやってみたことを書き綴りたいと思います。連絡先はtarosa.yでgmail.comです。

Luaridaグラフィック編 (3)

Luaridaのグラフィック関連のコマンドは下記です。

グラフィックコマンド

    • color() : 色コード計算
    • canvas.drawLine : 線を引く
    • canvas.drawRect : 矩形を描く
    • canvas.drawCircle : 円を描く
    • canvas.drawCls : 指定色で塗りつぶす
    • canvas.drawText : 文字を書く
    • canvas.drawTextCenter : センタリングして文字を書く
    • canvas.drawTextBox : 指定領域で折り返して文字を書く
    • canvas.getviewSize : 画面サイズを取得する
    • canvas.putg : ワーク画面からメイン画面に画像を出力する
    • canvas.getg : メイン画面の画像をワーク画面に取得する
    • canvas.putflush : フラッシュしてputg()した画像を表示する。
    • canvas.loadBmp : PNGファイルをワーク画面に読み込む
    • canvas.saveBmp : ワーク画面の画像をPNGファイルとして保存する
    • canvas.workCls : ワーク画面を指定色で塗りつぶす

簡単に例をあげつつ説明していきます。

color( R, G, B [,Alpha] )

0〜255の範囲で赤、緑、青の色強度を指定します。透過度Alphaも指定できます。
例.
canvas.drawCls(color(255,255,255))
画面を白に塗りつぶします。

canvas.drawLine( x0, y0, x1, y1, 色 )

メイン画面の(x0,y0)-(x1,y1)の範囲に、指定色で線を引きます。
例.
 canvas.drawLine( 0, 0, 100, 100, color(0,0,0) )
画面座標(0,0)から(100,100)までを黒い線で結びます。

canvas.drawRect( x0, y0, x1, y1, 色 [,塗りつぶし])

メイン画面の(x0,y0)-(x1,y1)が対角となる矩形を指定色で描きます。
塗りつぶし: 0枠だけ, 1: 塗りつぶし
となります。塗りつぶしは省略可能です。
例.
 canvas.drawLine( 0, 0, 100, 100, color(0,0,0), 1 )
画面座標(0,0)と(100,100)を対角とする矩形を黒く塗りつぶします。

canvas.drawCircle( x, y, r, 色 [,塗りつぶし])

メイン画面の(x,y)を中心に半径rの円を指定色で描きます。
塗りつぶし: 0枠だけ, 1: 塗りつぶし
となります。塗りつぶしは省略可能です。
例.
 canvas.drawCircle( 100, 100, 25, color(255,0,0) )
画面座標(100,100)を中心とする半径25の赤い円を書きます。

canvas.Cls( 色 )

指定色でメイン画面を塗りつぶします。ただし、color(0,0,0,0)で塗りつぶすことはできません。意味が無いかなと思って。
例.
 canvas.Cls( color(0,0,0) )
メイン画面を黒で塗りつぶします。

 以下、graphicsample.luaサンプルファイルです。

-----------------------------------------
--グラフィックサンプル
------------------------------------------
--関数宣言--------------------------------
main={}  --mainメソッド

--グローバル変数宣言----------------------
------------------------------------------
mt={}
mt.__newindex=function(mtt,mtn,mtv)
  dialog( "Error Message", "宣言していない変数 "..mtn.." に値を入れようとしています", 0 )
  touch(3)
end
mt.__index=function(mtt,mtn)
  dialog( "Error Message", "変数 "..mtn.." は宣言されていません", 0 )
  touch(3)
end
setmetatable(_G,mt)
--------以下が実プログラム----------------

------------------------------------------
--メインプログラム
------------------------------------------
function main()
local x = 0
local y = 0
local cx, cy
local r

  canvas.drawCls( color(255,255,255) )

  for x=0,100,2 do
    canvas.drawLine( x*2, 0, 200-x*2, 200, color(255,0,0) )
    canvas.drawLine( 0, x*2, 200, 200-x*2, color(0,255,255) )
  end

  canvas.drawRect( 0, 201, 200, 250, color(0,0,255) )
  canvas.drawRect( 201, 201, 300, 250, color(0,255,60), 1 )

  cx = 200
  cy = 200
  r = 50
  canvas.drawCircle( cx, cy, r,  color(0,0,0) )
  canvas.drawCircle( cx, cy, 20, color(0,0,255), 1 )

  touch(3)
end
main()