とりあえず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ぐらいまでしかいきませんか。