キャンバス(Canvas)

キャンバスは,図形を描く,テキストを挿入する,画像を張り付ける,ウィンドウを載せるといったことができます.

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クラスのインスタンス変数およびメソッドを以下に示します.

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'


戻る