Ruby/SDLでボタンを作る


アイコン: famfamfam.comのものを使用(CCライセンス)


いままでフォトレタッチソフトでちまちま手動で作っていたけど
数ヵ月後には作り方(位置とかの細かいパラメータ)を忘れそうなので、スクリプト化してみた。


RMagickとかも使ってみたけど、Ruby/SDLがべんり!さくさく!おすすめ!
libfreetype-6.dllを新しいものに替えれば、フォントのレンダリングも超きれい(^ー^* )
逆に言うと、替えないと超汚い。


下のようなバッチファイルで、いろんなボタンを自動生成できるようになった。
あとで、今のボタン画像と変える。見た目は今までのボタンとほぼ一緒。
フォントを変えようかな。VC#2008Expressについてきたメイリオがなかなか良かったし。

ruby buttongen.rb "保存する" -f "C:\WINDOWS\Fonts\HGRSMP.TTF" -i "icons\disk_multiple.png"
ruby buttongen.rb "削除する" -f "C:\WINDOWS\Fonts\HGRSMP.TTF" -i "icons\delete.png"
ruby buttongen.rb "空にする" -f "C:\WINDOWS\Fonts\HGRSMP.TTF" -i "icons\bin_empty.png"
ruby buttongen.rb "検索する" -f "C:\WINDOWS\Fonts\HGRSMP.TTF" -i "icons\magnifier.png"
ruby buttongen.rb "追加" -f "C:\WINDOWS\Fonts\HGRSMP.TTF" -i "icons\add.png"
ruby buttongen.rb "削除" -f "C:\WINDOWS\Fonts\HGRSMP.TTF" -i "icons\delete.png"
ruby buttongen.rb "戻す" -f "C:\WINDOWS\Fonts\HGRSMP.TTF" -i "icons\arrow_undo.png"


buttongen.rbから抜粋。

# 余白のサイズ
padding = options["--padding"].to_i
# テキストからサーフェスを作る
text = TTF.open(options["--font"], 13).render_blended_utf8(args[0].toutf8 || "無題", 0x66, 0x66, 0x66)
# アイコンが指定されてたら、それでサーフェスを作る
icon = Surface.new(SRCALPHA, 0, 0, 32, 0x000000ff, 0x0000ff00, 0x00ff0000, 0xff000000)
if options["--icon"]
  icon = Surface.load(options["--icon"])
end
# テキストとアイコンから、ボタンサイズを計算して、ベースのサーフェスを作る
w = 16 + text.w + padding * 3
h = [16, text.h].max + padding * 2
base = Surface.new(SRCALPHA, w, h, 32, 0x000000ff, 0x0000ff00, 0x00ff0000, 0xff000000)
# 色塗って枠をつけてアイコンとテキストを合成
base.fill_rect(0, 0, w, h, 0xffdddddd)
base.draw_rect(0, 0, w - 1, h - 1, 0xffcccccc)
base.put(icon, padding, (base.h - icon.h) / 2)
base.put(text, padding * 2 + icon.w, (base.h - text.h) / 2)
# 保存
base.save_bmp(File.expand_path(File.dirname(__FILE__)) + "/#{args[0]}.bmp")