ソース

誰かの役に立ちますように。

#!/usr/local/bin/ruby
require 'vr/vruby'
require 'vr/vrcontrol'


#-----------------------------------------------------
# グラデーションを表示するコントロールです
#-----------------------------------------------------
class FractalCanvas < VRPanel
	include VRDrawable

	# キャンバスの幅
	attr_accessor :width
	# キャンバスの高さ
	attr_accessor :height

	#------------------------------------------
	# コンストラクタ
	#------------------------------------------
	def construct
		@width = 500
		@height = 500
	end

	#------------------------------------------
	# 自分自身に描画します
	#------------------------------------------
	def self_paint
		w,h = 0
		# 増分
		dW = 256.0 / width
		dH = 256.0 / height
		# 描画開始
		for w in 0..(width - 1)
			for h in 0..(height - 1)
				setPixel(w, h, RGB((w * dW).to_i , (h * dH).to_i, 127))
			end
		end
	end
end

#-----------------------------------------------------
# グラデーションを表示するクラスです
#-----------------------------------------------------
class FractalViewer < VRForm
	def construct
		self.caption = "グラデーション描くよ"
		addControl(VRButton, "button", "グラデーション描くよ", 20, 10, 250, 30)
	end

	public
	#-----------------------------------------------------
	# グラデーションを表示します
	#-----------------------------------------------------
	def button_clicked
		# 超ごり押しの処理
		if (@button.caption != "グラデーション描いてるよ")
			@button.caption="グラデーション描いてるよ"
			addControl(FractalCanvas, "canvas", "canvas", 20, 50, 500, 500)
		end
	end
	
	private
	# ここにprivateのメソッドを書く
end

#-----------------------------------------------------
# メインです
#-----------------------------------------------------
VRLocalScreen.start(FractalViewer, 200, 200, 600, 600)