« てにをは | トップページ | 反省会 »

テケテケな日々(Ruby/tkメモの1)

 Ruby/tk の公式なドキュメントがまだ不十分なので、ないよりはという程度にメモしてみる。「Ruby アプリケーションプログラミング」「Ruby を 256+ 倍使うための本 場外乱闘編」を参考にしているとはいえ、多分にわたしの推測やらがはいっているので、絶対的に正しいかどうかは不明です。

■基本

require 'tk'

Tk.mainloop

 Window を表示するだけ。クローズボタンで終了。
 より丁寧には明示的に TkRoot.new するべきかもしれないが、なくても補完してくれているようなのでどうしてもというわけでもなさそう(「Ruby アプリケーションプログラミング」でもあえては書かれていない)。


■画像を表示する

○Text ウィジェットに表示する。

require 'tk'

t = TkText.new('width' => 30, 'height' => 20).pack
img = TkPhotoImage.new('file' => "image.gif")
TkTextImage.new(t, 'end', 'image' => img)
Tk.mainloop

 TkText における width height は文字数で指定するので、ピクセル数と合わせるなら、

text-width = pixel-width / 8  ( 30 = 240/8 )

text-height = pixel-height / 16  ( 20 = 320/16 )

 にする。pack を忘れると表示されないので注意(基本のお約束)。

 イメージを設定するには、TkBitmapImage もあるが、モノクロ画像のようなのでカラーイメージなら TkPhotoImage で。ファイル名を指定するしか方法がないようで、これが ImageMagick で生成したオブジェクトでもいけたら便利なのだけれど(知らないだけで方法はあるのかもしれないが)。パス指定もできると思うが、Windows の空白を含むパスだとうまくいかない例があるようなので、カレントディレクトリに画像ファイルを置いたほうが良さそう。

 画像を表示する場所(TkText)と画像そのもの(TkPhotoImage)が準備できたら、TkTextImage で実際に表示させる。書式としては多分こんな感じ、

TkTextImage.new(表示させる場所, (よくわからない)'end', 'image' => 画像)

 最後の Tk.mainloop はボタンなどの入力待ちループのお約束。これがないと瞬時に終了してしまう。


○Canvas ウィジェットに表示する。

require 'tk'

canv = TkCanvas.new('width' => 240, 'height' => 320).pack
img = TkcPhotoImage.new('file' => 'image.gif')
TkcImage.new(canv, 120, 160, 'image' => img)
Tk.mainloop

 キャンバスウィジェットにしてもほぼ同じ。TkCanvas.new の width height はピクセル数を指定。

 TkcImage.new もほぼ同様で、

TkcImage.new(表示するキャンバス, 画像の中心 x 座標, 画像の中心 y 座標, 'image' => 画像)

 といった感じ。

 また TkcPhotoImage で標準で対応している画像ファイルの種類は極限定されたものだけなので、

require 'tkextlib/tkimg'

 しておくほうが幸せになれる。使用するファイルの種類が決まっているなら、

require 'tkextlib/tkimg/png'

 などと指定してもよい。


 ぜひとも手元に置きたい。

4274064611Rubyアプリケーションプログラミング
オーム社 2002-04

by G-Tools


 テケテケ、デケデケ。

4309403522青春デンデケデケデケ (河出文庫―BUNGEI Collection)
河出書房新社 1992-10

by G-Tools

|

« てにをは | トップページ | 反省会 »

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック


この記事へのトラックバック一覧です: テケテケな日々(Ruby/tkメモの1):

« てにをは | トップページ | 反省会 »