Thursday, March 15, 2012

Luaでハッチングパターンを塗りつぶしする

Luaでハッチングパターンを塗りつぶしするには、以下のコードを実行します。
require"imlua"
require"cdlua"
require"cdluaim"

-- キャンバスを作成
image = im.ImageCreate(200, 150, im.RGB, im.BYTE)
canvas = image:cdCreateCanvas()

canvas:Activate()  
-- 背景色
canvas:Background(cd.EncodeColor(255, 255, 255))
canvas:Clear()
-- 線の色
canvas:Foreground(cd.EncodeColor(0, 0, 255))
-- ハッチング線を描画(HORIZONTAL)
canvas:Hatch(cd.HORIZONTAL)
canvas:Box(0, 100, 100, 150)

-- ハッチング線を描画(VERTICAL)
canvas:Hatch(cd.VERTICAL)
canvas:Box(100, 200, 100, 150)

-- ハッチング線を描画(FDIAGONAL)
canvas:Hatch(cd.FDIAGONAL)
canvas:Box(0, 100, 50, 100)

-- ハッチング線を描画(BDIAGONAL)
canvas:Hatch(cd.BDIAGONAL)
canvas:Box(100, 200, 50, 100)

-- ハッチング線を描画(CROSS)
canvas:Hatch(cd.CROSS)
canvas:Box(0, 100, 0, 50)

-- ハッチング線を描画(DIAGCROSS)
canvas:Hatch(cd.DIAGCROSS)
canvas:Box(100, 200, 0, 50)

-- ファイルを保存
image:Save("hatch.png", "PNG")

出力画像

動作環境
Lua for Windows 5.1.4

Monday, March 12, 2012

Luaで扇形を描画する

Luaで扇形を描画するには、以下のコードを実行します。
require"imlua"
require"cdlua"
require"cdluaim"

-- キャンバスを作成
image = im.ImageCreate(200, 200, im.RGB, im.BYTE)
canvas = image:cdCreateCanvas()

canvas:Activate()  
-- 背景色
canvas:Background(cd.EncodeColor(255, 255, 255))
canvas:Clear()
-- 線の色
canvas:Foreground(cd.EncodeColor(0, 0, 255))
-- 扇形を描画
canvas:Sector(100, 100, 180, 180, 30, 150)

-- ファイルを保存
image:Save("sector.png", "PNG")

出力画像

動作環境
Lua for Windows 5.1.4