f8g

とりあえずRGBシステム

中途半端。

require 'mscorlib'
require 'System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
require 'System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'

class ColorControl
	def initialize()
		@label = System::Windows::Forms::Label.new
		@label.width = 50

		@scroll = System::Windows::Forms::HScrollBar.new
		@scroll.left    = @label.width + 10
		@scroll.width   = 255
		@scroll.maximum = 255

		@text = System::Windows::Forms::TextBox.new
		@text.text  = "0"
		@text.left  = @scroll.left + @scroll.width + 10
		@text.width = 50
	end

	def added(form)
		form.controls.add(@label)
		form.controls.add(@scroll)
		form.controls.add(@text)
	end

	def top=(n)
		@label.top  = n
		@scroll.top = n
		@text.top   = n
	end

	def value
		@scroll.value
	end

	def label
		@label
	end

	def scroll
		@scroll
	end

	def text
		@text
	end
end

form = System::Windows::Forms::Form.new
form.width = 400

canvas = System::Windows::Forms::PictureBox.new
canvas.width  = 300
canvas.height = 150

form.controls.add(canvas)

r = ColorControl.new
g = ColorControl.new
b = ColorControl.new

r.label.text = "red"
g.label.text = "green"
b.label.text = "blue"

[r, g, b].inject(canvas.height+10) {|top, control|
	control.top = top
	control.added(form)

	control.scroll.scroll {|sender, args|
		r.text.text = r.scroll.value.to_s
		g.text.text = g.scroll.value.to_s
		b.text.text = b.scroll.value.to_s
		canvas.backColor  = System::Drawing::Color::fromArgb(r.scroll.value, g.scroll.value, b.scroll.value)
	}

	top += 20
}

canvas.backColor = System::Drawing::Color::fromArgb(r.scroll.value, g.scroll.value, b.scroll.value)

form.showDialog()

Rubyのリファレンスが役に立たない! VS立ち上げてオブジェクトブラウザを見ながらやってます。型変換もRubyのではなくInt16::parse(str)みたいにやる必要がある、場合もあるし、Rubyっぽくできる場合もある。 r.text.text = r.scroll.value.to_s らへんは何故か control.text.text = sender.value ってできなかったな。
あと、なんでScrollBar#maximumが246ぐらいまでしかいきませんか。