Ruby/TkではTkCanvasクラスが相当します.
使用例を示します.
#!/usr/local/bin/ruby
require 'tk'
canvas = TkCanvas.new(nil,
'height' => 400,
'width' => 400)
canvas.pack('side' => 'top')
TkcOval.new(canvas,
50,50,
170,150,
'outline' => 'blue',
'width' => 5)
TkcArc.new(canvas,
70, 300,
200, 390,
'start' => 90,
'extent' => 135,
'style' => 'pieslice',
'outline' => 'red',
'fill' => 'gray25',
'width' => 5)
TkcRectangle.new(canvas,
240, 40,
320, 100,
)
TkcPolygon.new(canvas,
10,210,
100,210,
130,250,
40, 290,
20, 310,
'fill' => 'darkgreen',
'outline' => 'yellow',
'width' => 10)
TkcLine.new(canvas,
230, 330,
270, 390,
320, 300,
380, 370,
'arrow' => 'both')
TkcText.new(canvas,
250,290,
'text' => "この様にテキストも\n入力できます.",
'fill' => 'red'
)
TkcImage.new(canvas,
290, 190,
'image' => TkPhotoImage.new('file' => '~kajiyama/WWW/fig/sample.gif'))
TkcWindow.new(canvas,
160,190,
'window' => TkButton.new(nil, 'text' => 'button',
'command' => proc{print "hello world\n"})
)
Tk.mainloop
上記のプログラムを走らせると,下のようになります.このように様々なものが描けます.また,中央付近のボタンはクリックすると,通常のボタンと同じようにプロンプトに出力します.
TkCanvasクラスのインスタンス変数およびメソッドを以下に示します.
| インスタンス変数名 | 役割 |
|---|---|
| background | 背景色. |
| borderwidth | 枠の幅.整数値で指定. |
| cursor | マウスカーソルの形. |
| highlightcolor | ウィジェットにフォーカスがある時の枠の色. |
| highlightthickness | ウィジェットにフォーカスがある時の枠の幅. |
| insertbackground | カーソルの背景色 |
| insertborderwidth | カーソルの境界線の幅 |
| insertofftime | カーソル点滅(OFF)の時間(msec) |
| insertontime | カーソル点滅(ON)の時間(msec) |
| insertwidth | カーソルの幅 |
| relief | ウィジェットの凹凸.'raised'または'sunken'で指定. |
| selectbackground | セレクト時の背景色. |
| selectborderwidth | セレクト時の枠の太さ. |
| selectforeground | セレクト時の前景色. |
| xscrollcommand | 横スクロールバーを連動させるときに使用します.詳説はScrollbarで. |
| yscrollcommand | 縦スクロールバーを連動させるときに使用します.詳説はScrollbarで. |
| height | キャンバスの高さ. |
| width | キャンバスの幅. |
| confine | scrollregionによって指定された部分を,キャンバスの表示されているところの外側に設定できるか.論理値で指定します. |
| scrollregion | canvasの仮想的な長方形領域を設定します, 文字列'left top right bottom'(斜体は数字でピクセル値) で指定します.例:'0 0 1200 1600' |