Visual Basic 初級講座 |
Visual Basic 中学校 > 初級講座 >
第1回 色をあやつる
今回から、Visual Basic.NETでのプログラミング初級講座を開講いたします。初級講座では第1回から第3回の間、VBでのプログラミングになれるために「グラフィックス」関連の解説をします。グラフィックスは目で見えるので分かりやすい し、なんとなかく楽しいからです。第4回からは基本的なVBの構文・構造を説明します。
VB6の経験がある方はVB6初級講座と読み比べていただけるといいかもしれません。第1回の今回はVB6初級講座の第1回と同じくVB.NETでの色の指定方法を説明します。
初級講座の内容が難しすぎると感じる場合は、入門講座を先にご覧になってください。
この回の要約 ・色を指定するにはColor構造体を使う。 ・背景色を変更するにはBackColorプロパティを使う。 ・プロパティウィンドウで色を指定すると便利。 |
1.とりあえず色をつける
深いところにはあまりこだわらずにとりあえずフォームの背景色を変えるプログラムを作ってみましょう。
フォームにButton(ボタン)をひとつはりつけて、Clickイベントに次のように記述してください。
Private Sub Button1_Click(ByVal
sender As System.Object,
ByVal e As System.EventArgs)
Handles Button1.Click Me.BackColor = Color.Crimson End Sub |
■コード1:フォームの背景色をクリムゾン色にする。
このコード(プログラム)の意味は「自分(フォーム)の背景色をCrimson(クリムゾンという色)にしなさい」です。準備ができたら早速実行してボタンを押してみてください。フォームの色が赤っぽい色に変更されましたね?この色がCrimson(クリムゾン)という色なのです。
さて、Me.BackColor = Color.Crimson の意味をもう少し詳しく見てみましょう。Me.BackColor は「 自分の背景色」という意味です。「自分」というのはこの場合フォームのことです。このようにMeは常に自分を表しています。フォームの中でのプログラムではMe =自分 = フォーム となります。右辺の Color.Crimsonはそうすると「Crimson(クリムゾン色)」を表していることになるのですが、だからといって Form1.BackColor = Crimson のように書いてはいけません。
なぜならCrimsonがどんな色なのか誰も知らないからです。Crimsonがどんな色か知っているのは Color だけです。そこでただCrimsonと書くのではなく Color.Crimson と書くわけです。このColorについては後述します。
入力中に Color.
とColorのメンバの一覧が表示されますよね。この一覧にあるのはほとんど色の名前です。他の色がどんな色かプログラムを変えて確認してみてください。
色の名前が英語だからわかりにくいなぁと日本人ならみんなが思うでしょう。私も思います。でもあまり心配しないで下さい。色を指定する方法は何もこれだけではありません。
発展学習 - イベントのハンドル 発展学習では意欲的な方のために現段階では特に理解する必要はない項目を解説します。 上の例でボタン(Button1)をクリックしたときにこのプログラムが実行されるのは Handles Button1.Click という指定があるからです。この指定はデザインモードでボタンをダブルクリックしたときに自動で生成されたものです。ためしにこの指定を手動で削除してみるとボタンをいくらクリックしてもこのプログラムは実行されなくなります。 また本文中でも簡単に説明しましたがプログラム中にでてくるMeとは常に自分を指します。この場合は現在プログラムをしているForm1を示してい ます。Meの指定は常に省略することができるのでMe.の部分を削除しても結果は同じになります。 |
2.色を作る
では先ほど書いた Me.BackColor = Color.Crimson の部分を少し変更して次のように記述してください。
Private
Sub Button1_Click(ByVal
sender As System.Object,
ByVal e As System.EventArgs)
Handles Button1.Click Me.BackColor = Color.FromArgb(100, 120, 230) End Sub |
■コード2:自分で色を作る
このプログラムを実行してボタンをクリックするとフォームの背景色は青っぽい色になります。ということは Color.FromARGB(100, 120, 230) はこの「青っぽい色」を表していることになりますね。
この FromARGB は色を混ぜろというメソッド(命令)です。かっこのなかの3つの数字はどれくらい色を混ぜるのかをあらわしていて、左から 赤、 緑、 青 を意味しています。ですから FromARGB(100, 120, 230) は、赤100、緑120、青230を混ぜた色になるわけです。一番大きい混ぜ方は FromARGB(255, 255, 255) でこの色は「白」を表します。FrmARGB(0, 0, 0)は「黒」です。混ぜるといっても絵の具と違って「光」を混ぜるので、絵の具の場合とできる色が違います。注意してください。(たとえば、絵の具で赤、緑、青をたくさん混ぜると「黒」になりますよね)。
なお、0〜255の範囲で指定しないとエラーになります。
さて、このように色を作る場合でも、FromARGBはColorのメンバなので、Color を省略して Form1.BackColor = FromARGB(100, 120, 230) のように書くことはできません。
3.Color...?
ここで説明することはちょっと難しいので本当は飛ばしたいのですが、これからの説明で「クラス」「構造体」「メンバ」という言葉が使えないと大変なのでここで説明することにしました。もし、理解できなくても深く追求しないでください。後々何回も何回もでてくるのでそのうちわかる日がきます。 |
以上2つの色を指定する方法を説明しましたが、どちらにも Color がでてきました。このColor(カラー)について少しだけ説明しましょう。
VBでは 「物に命令する」 という形式でプログラミングを進めていきます。以前のVB6などでもこの点は同じでしたがVB.NET(VB7)になってからはさらにこの考え方が推し進められています。そして、VBにはこの命令される「物」 として「クラス」と「構造体(こうぞうたい)」の2種類が用意されています。
注意:これは乱暴な言い方で、知識のある方がこの説明を聞いたら「エー、違うんじゃないの」というかもしれません。けれど私は、この記述 『命令される「物」のことを「クラス」といいます。』は利用する側から見たクラス ・構造体の1面を正しく表現していると考えます。ただし、あくまで「1面」です。知識のない方はこれをもって「クラスとは××だ」と理解しないようにお願いします。
ここまで説明すればお分かりと思いますがこの Colorはこのうち「構造体」と呼ばれる種類のほうに属しています。そう、Colorは色を管理する役割を持った構造体なのです。
VBにはこの他にもいろいろなクラスや構造体が登場します。画像を管理するクラスや数学を管理するクラスもあります。この「クラス」の導入こそが以前のVBとの最大の違いといえるでしょう。
クラスや構造体は自分で作ることもできますがはじめから膨大な量の便利なクラスや構造体が用意されているのではじめのうちはこれら用意されているクラスや構造体の使い方を覚えていくといいでしょう。クラスや構造体についてはまたの機会に詳しく解説する予定です。
ここではもうひとつだけ重要な説明をしておきます。
Color構造体の例で言うと今までにすでにCrimsonという色とFromArgbという メソッド(命令)がでてきましたね。普通の言葉で言うと「CrimsonとFromArgbはColorに属している」ということになりますが、これを専門用語を使って「CrimsonとFromArgbはColorのメンバである」といいます。この「メンバ」という言葉はこれから頻繁(ひんぱん)に出てくるので必ず覚えてください。
他の例で言うと「BackColorはForm1のメンバ」です。(Form1はクラスです)。なお、同じ名前のメンバを持つ別のクラスや構造体はたくさん存在しますからただ単に「BackColor」というキーワードを見ただけで、「あ、Form1のメンバだな」と考えるのはいけません。まだでてきていない他のクラスにもBackColorというメンバを持つものがあります。
→このあたりの説明については入門講座第5回「メソッドとプロパティ」を参照してください。
4.プロパティウィンドウを使う
いままでの説明を理解していれば通常の色の指定で困ることはないと思います。たとえば赤いフォームを表示させるには
Private
Sub Button1_Click(ByVal
sender As System.Object,
ByVal e As System.EventArgs)
Handles Button1.Click Me.BackColor = Color.Red End Sub |
■コード3:フォームの背景色を赤にする。
と書くか、
Private
Sub Button1_Click(ByVal
sender As System.Object,
ByVal e As System.EventArgs)
Handles Button1.Click Me.BackColor = Color.FromArgb(255, 0, 0) End Sub |
■コード4:フォームの背景色を赤にする別の方法
と書けば良いわけです。
しかし、この2つの方法はどちらもプログラムが開始した後で色を変更する方法です。途中で色を変更する必要がないときはフォームのプロパティとして背景色を設定することでもっと簡単に色指定ができます。
その方法は、デザインモードでフォームをクリックしてからプロパティウィンドウで BackColor と書かれている項目を探します。その項目には何もいじっていなければ灰色の四角と Control という文字がかかれていることでしょう。ここを自分で変更して Red と打ち込んでしまえばいいだけです。
自分で打ち込むのが大変な人はこの欄(らん)を一回クリックすると右側に 下向きの矢印が表示されるのでそれをクリックしてください。そうすると色指定のダイアログボックスが表示されます。この中から好きな色を選択すればいいでしょう。「何か暗い色ばっかりで赤とかないよ」という人は「System」カラーのところしか見ていない人でしょう。 カスタムやWebのタグをクリックするとまぁ通常使いそうな色は全部そろっていますね。最初に出てきたCrimsonも一覧の中にあります。
■画像1:プロパティウィンドウからフォームのBackColor(背景色)にCrimson(クリムゾン)を指定しているところ
このプロパティウィンドウで設定しておけば自分でプログラミングしなくても色を変更できます。もちろんプログラム中で再度色を変えることもできます。
→プロパティウィンドウの扱い方に関しては入門講座第3回「プロパティをいじろう」を参照してください。
5.最後に
今回のテーマ「色の指定」は見た目でわかるし、簡単なので初級編の第1回として取り上げました。色以外の分野でも基本は同じVBですから今回説明したことは役に立つはずです。それではみなさんのVBプログラミングが快適であるようにお祈りいたしております。
今回の新出語
新出語 | 読み方 | 説明 |
Private | プライベート | 現在の段階では無視すること。これをつけると外部のモジュールからアクセスできなくなる。 |
Sub | サブ | 現在の段階では無視すること。独立したサブプロシージャの宣言。 |
ByVal | バイバル | 現在の段階では無視すること。引数が値渡しであることを示す。 |
As | アズ | 現在の段階では無視すること。変数の型を定義する。 |
System | システム | 現在の段階では無視すること。名前空間のひとつ。もっとも根本的な名前空間。 |
Object | オブジェクト | 現在の段階では無視すること。もっとも根本的な型。 |
EventArgs | イベントオーグス | 現在の段階では無視すること。イベントデータを保持する基本的なクラス。 |
Handles | ハンドルス | 現在の段階では無視すること。プロシージャとイベントを関連付けるステートメント。 |
End Sub | エンドサブ | 現在の段階では無視すること。プロシージャの末端をあらわす。 |
Me | ミー | 自分を表す。 |
BackColor | バックカラー | 背景色をあらわすプロパティ。 |
Color | カラー | 色を管理する。構造体。 |
Crimson | クリムゾン | クリムゾン色を表す。Color構造体のメンバ。 |
FromArgb | フロムエーアールジービー | 色を混ぜる命令(メソッド)。Color構造体のメンバ。 |
Red | レッド | 赤を表す。Color構造体のメンバ。 |
クラス | クラス | プログラマの命令を実行する物。詳しくは別の機会に解説する予定です。 |
構造体 | こうぞうたい | プログラマの命令を実行する物。詳しくは別の機会に解説する予定です。 |
メンバ | メンバ | クラスや構造体に属している命令(メソッド)や性質(プロパティ) |
■表1:今回新しく登場した言葉。赤字は必修単語。うすい字で書いてる単語は今は覚えなくてよいです。