§12 ファイル処理(2)1 | プログラミング実習 |
色は赤、緑、青の光の三原色で作られる。各色の明るさは0〜255の256段階で設定する。この三色を混ぜることで色を作成する。作成できる色数は16,777,216色(=256×256×256)である。この色見本を表示するプログラムを作成する。プログラム終了時に色のデータを保存し、起動時に読み込む。ここでは、ファイルからデータを行単位で読み書きする方法について学習する。
オブジェクト: 水平スクロールバー(HScrollBar)、ファイルのダイアログ(OpenFileDialog, SaveFileDialog)
↑ 「すべてのWindowsフォーム」にあり
【1】 プログラム作成の準備
操作 1 Windowsアプリケーションを作成するためのプロジェクトを作成する。
プロジェクト名は「実習12ファイル処理2」とする。
操作 2 フォーム(Form1)のプロパティを次のように設定する。
Text ファイル処理2
操作 3 上の図を参考にして、必要なオブジェクトを配置し、プロパティを設定する。
ラベル (Name) → lblColor、 Text → 色見本
(Name) → lblRed、 Text → 0
(Name) → lblGreen、 Text → 0
(Name) → lblBlue、 Text → 0ピクチャボックス (Name) → PictureBox1、 BorderStyle → Fixed3D ボタン (Name) → WSCButton、 Text → Webセーフカラー
(Name) → EndButton、 Text → 終 了スクロールバー (Name) → hsbRed、 LargeChange → 51
(Name) → hsbGreen、 LargeChange → 51
(Name) → hsbBlue、 LargeChange → 51
操作 4 プログラムを保存する。 ( [ファイル(F)] → [すべてを保存(L)] )
操作 5 プログラムを実行する。
どれを操作しても何も起こらない。
操作 6 [終了]ボタンに対応するメソッドを次のように作成する。[終了]ボタンをダブルクリックしてメソッドを用意する。
Private Sub EndButton_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles EndButton.Click
Me.Close()
End Sub
[終了]ボタンをクリックするとプログラムが終了する。
【2】 スクロールバーと色作成
操作 7 スクロールバーの初期値を設定するため、Loadイベントに対応するメソッドを次のように作成する。フォームをダブルクリックしてメソッドを用意する。
Private Sub Form1_Load(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles MyBase.Load
hsbRed.Maximum = 255 + hsbRed.LargeChange -
1 '最大値の設定
hsbGreen.Maximum = 255 + hsbGreen.LargeChange
- 1
hsbBlue.Maximum = 255 + hsbBlue.LargeChange
- 1
End Sub
スクロールバーで選択できる値の範囲を0〜255に設定する。範囲の最小値はMinimumプロパティ、最大値はMaximumプロパティに設定する。プロパティウィンドウで設定できるが、最大値は次のような計算が必要なのでプログラムで設定する。
最大値 = 希望する最大値 + LargeChangeプロパティ - 1
操作 8 スクロールバーを操作するとラベルに値が表示されるようにするため、Scrollイベントに対応するメソッドを次のように作成する。スクロールバー(hsbRed)をダブルクリックしてメソッドを用意する。
Private Sub hsbRed_Scroll(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Handles hsbRed.Scroll, hsbGreen.Scroll, hsbBlue.Scroll
If sender.Equals(hsbRed) Then
'赤
lblRed.Text = hsbRed.Value
'値表示
ElseIf sender.Equals(hsbGreen) Then
'緑
lblGreen.Text = hsbGreen.Value
'値表示
ElseIf sender.Equals(hsbBlue) Then
'青
lblBlue.Text = hsbBlue.Value
'値表示
End If
End Sub
3つのスクロールバーのイベントをハンドルする(受け取る)ため、下線部のように緑と青のスクロールバーの分を追加する。これで、どのスクロールバーを操作してもこのメソッドが処理される。
スクロールバーの判別は "sender.Equals(オブジェクト名)" で行っている。
スクロールバーの値は、Valueプロパティで参照(設定)することができる。
実行して、スクロールバーを操作すると、現在の値が表示される。
操作 9 スクロールバーで設定した値で、PictureBox1の色を設定し、色コードを16進数で表示するColorDispメソッドを次のように作成する。
Private Sub ColorDisp()
Dim colorCode As String
'色設定
PictureBox1.BackColor = Color.FromArgb(hsbRed.Value,
hsbGreen.Value, hsbBlue.Value)
'値表示
lblRed.Text = hsbRed.Value
lblGreen.Text = hsbGreen.Value
lblBlue.Text = hsbBlue.Value
'16進数変換
colorCode = Microsoft.VisualBasic.Right("0"
& Hex(hsbRed.Value), 2)
colorCode = colorCode & Microsoft.VisualBasic.Right("0"
& Hex(hsbGreen.Value), 2)
colorCode = colorCode & Microsoft.VisualBasic.Right("0"
& Hex(hsbBlue.Value), 2)
lblColor.Text = "色見本=#" & colorCode
End Sub
Color.FromArgb(赤, 緑, 青 ) 赤, 緑, 青 の各値から色を作成する。
Microsoft.VisualBasic.Right(文字列, 文字数 ) 文字列 の右端(末尾)から文字数 分だけの文字を取り出す。
Hex(値 ) Microsoft.VisualBasic.Hex() 値 を16進数の文字列に変換する。
操作 10 スクロールバーを操作したときのhsbRed_Scrollメソッドを次のように変更する。
Private Sub hsbRed_Scroll(ByVal sender As System.Object,
ByVal e As System.Windows.Forms.ScrollEventArgs) Handles hsbRed.Scroll,
hsbGreen.Scroll, hsbBlue.Scroll
If sender.Equals(hsbRed) Then '赤
lblRed.Text = hsbRed.Value '値表示
ElseIf sender.Equals(hsbGreen) Then '緑
lblGreen.Text = hsbGreen.Value '値表示
ElseIf sender.Equals(hsbBlue) Then '青
lblBlue.Text = hsbBlue.Value '値表示
End If
ColorDisp()
End Sub
ColorDispメソッドでスクロールバーの値をラベルに表示させるので、このメソッドでの個別の表示プログラムは不要となる。
実行して、スクロールバーを操作すると色と色コードが表示される。
§12 ファイル処理(2)1 | Copyright©2008 Hiroshi Masuda |