dポイントプレゼントキャンペーン実施中!

プログラミング(?)が初めてなのでよく分からないのですが、

Visual Stadio2005のVisual Basicで

RED が &HFF000000+HScrollBar1.Value*&H10000
GREENが &HFF000000+HScrollBar2.Value*&H100
BLUE が &HFF000000+HScrollBar3.Value*&H1

PictureBox1.BackColor=Color.fromArgb()←この中に何を記述すれば
スクロールバーを動かして
この3色を混ぜ合わせることができるのでしょうか。

わかる方回答お願いいたします。

A 回答 (2件)

Color.FromArgb の使い方をヘルプで調べれば 4つの方法を知ることができます。

調べてみましたか?
で、ColorFromArgb(Int32, Int32, Int32) というオーバーロードを使用すれば赤緑青の 3つの値を指定して色を決定させられる事がわかります。
3つの Int32 (つまり VB で言えば Integer) は 8ビット カラー値 (つまり 0~255) を指定するってこともヘルプに載っています。

ということは質問者さんが書いている変な計算式は不要なわけです。(もちろん質問文には HScrollBar の Maximum プロパティをどのように設定しているのかが書かれていないので、場合によってはその計算式でもいけるのかもしれませんが)

私としては 3つの ScrollBar の ValueChanged イベントを 1つのイベント プロシージャに指定し、その中で

PictureBox1.BackColor = Color.FromArgb(HScrollBar1.Value, HScrollBar2.Value, HScrollBar3.Value)

と書きます。

しかしここで質問文とは関係の無い、ScrollBar の仕様が問題になります。
.Net Framework のスクロールバーの Maximum プロパティのヘルプには以下のように書かれています。
----
スクロール バーの値を、実行時にユーザーとのやり取りを通じて最大値にすることはできません。到達できる最大値は、 Maximum プロパティ値から LargeChange プロパティ値を引いて 1 を加えた値と同じです。最大値にはプログラムによってしか到達できません。
----
つまり Maximum プロパティを 255 に設定しても、マウスで操作をしても 255 まで持っていけないのです。
値を指定するためのコントロールなら TrackBar コントロールをお勧めします。
ScrollBar と同じように扱う事ができ、なおかつマウス操作で Maximum の値まで持っていくことができます。

PictureBox1.BackColor = Color.FromArgb(TrackBar1.Value, TrackBar2.Value, TrackBar3.Value)
    • good
    • 0

 HScrollBar1~3のレンジがわからないので正しいことはわかりませんが、各々0~255の値を持つとしておきましょう。



 Color.FromArgbはARGB値からColor値を生成するメソッドで、パラメータによって何種類かあります。

(1)Color.FromArgb (Int32)
 32bitのARGB値から生成

(2)Color.FromArgb (Int32, Color)
 8bitのアルファ値と既存のColor値から生成

(3)Color.FromArgb (Int32, Int32, Int32)
 各8bitのRGB値から生成

(4)Color.FromArgb (Int32, Int32, Int32, Int32)
 各8bitのARGB値から生成

したがって、与えるべきパラメータは
(1)を用いる場合は
 &HFF000000+HScrollBar1.Value*&H10000+HScrollBar2.Value*&H100+HScrollBar3.Value*&H1
(3)を用いる場合は
 HScrollBar1.Value, HScrollBar2.Value, HScrollBar3.Value
(4)を用いる場合は
 &HFF, HScrollBar1.Value, HScrollBar2.Value, HScrollBar3.Value

どれも得られる結果は同じですが
    • good
    • 0
この回答へのお礼

3色混ぜることができました!
ありがとうございました!!!

お礼日時:2010/07/27 19:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!