どうも!リョクちゃです。
長らく日が空いてしまいましたがボチボチと更新です。
今日は、iniファイルを使ってフォームの背景色を変更する方法を紹介します。
なんでこんな記事を書くかというと……
フォームの背景色を、例えばOKの場合は緑色、NGの場合は赤色、
どちらでもない場合は黄色といったように状況によって変更したい場合や、
アプリケーションの実行中に背景色を変更してしっくりきた時に、
iniファイルへ書き込んでおきたい場合に思い付きでコードを書いて
運用したら便利だったので。(個人差があるかもしれません。)
iniファイルについては、以下の記事たちをご覧ください。
ちなみに前回はこちら
目次
フォームの背景色を変更
まず、フォームの背景色を変更するには、
※ARGBとは、アルファ係数(0~255)を使用した、赤、緑、青の各要素を定義した値になります。
それぞれ、Rを赤、Gを緑、Bを青とし、各色を”要素”と呼びます。
たとえば、全ての要素が0であれば、背景の色は黒色になります。
一方で、全ての要素が255であれば、背景の色は白色になります。
ちなみに全ての要素を128にすると、背景色は灰色になります。
このようにして、0~255の各要素の値を調整することで背景色を変更することができます。
今回は、0~255の値を実際に調整するアプリを作り、しっくりくる色を見つけ、
iniファイルへ書き込むことを目的とします。
準備編
VisualStudio2019を使って、Windowsフォームアプリケーションを作成していきます。
最初の手順については、下記記事をご参照ください。
フォームの作成
以下のようなフォームを作成します。
①~⑨のコントロールについては以下の表のとおりです。
No | コントロール | 名前 |
---|---|---|
1 | Label | lbRed |
2 | Label | lbGreen |
3 | Label | lbBlue |
4 | TextBox | txtRed |
5 | TextBox | txtGreen |
6 | TextBox | txtBlue |
7 | Button | btnRead |
8 | Button | btnChange |
9 | Button | btnWrite |
各コントロールのフォントは、メイリオの18ptを設定しています。
実行環境
筆者の実行環境は、
- VisualStudio2019
- Windows 10 64bit
- .Net Framework 4.5.1
になります。
※ Windows7 8 8.1でも動作はできますが、画面デザインの表示が変わるかもしれません。
アプリケーションの目的
作成しようとしているアプリにしっくりと来る色を見つけることが目的になります。
動作
動作としては、
- “iniファイル読込み”ボタンを押すことで、
iniファイル内の指定の値を読込み - “背景色を変更する”ボタンを押すことで、
テキストボックス内に入力されている値を使って背景色を変更 - “iniファイルに書込む”ボタンを押すことで、
テキストボックスに入力された値をiniファイルへ書込む
これらができることとします。
プログラム編
iniファイルへの読込み・書込み
こちらについては、以下の記事で作成したクラスファイルを使用します。
iniファイルを読込む
クラスの使用方法
セクション名 : iniファイル上で[]で囲まれた項目
キー名 : iniファイル上で=の左辺にある項目
※ セクション名とキーはセットです。
例)
[A]
Test = 1
[B]
Name = Apple
セクション名”A”のTestの値を取得したいときは、
ちなみに、clsIni.GetIniInt(“A”, “Name”)では、値を取ることができません。
iniファイルへの書き込み
iniファイル読み込みボタン
ボタンを押したら、指定のキーの値を取得し、各テキストボックスに表示します。
コードを下に示します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
''' <summary> ''' iniファイルを読込む ''' </summary> ''' <param name="sender"></param> ''' <param name="e"></param> Private Sub btnRead_Click(sender As Object, e As EventArgs) Handles btnRead.Click ' iniファイルを読込み、各変数に値を代入 intRed = clsIni.GetIniInt("COLOR", "Red") intGreen = clsIni.GetIniInt("COLOR", "Green") intBlue = clsIni.GetIniInt("COLOR", "Blue") ' 読み取った値をテキストボックスに表示 Me.txtRed.Text = intRed Me.txtGreen.Text = intGreen Me.txtBlue.Text = intBlue End Sub |
背景色を変更ボタン
ボタンを押したら、テキストボックスに入力されている値を元に背景色を変更します。
コードを下に示します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
''' <summary> ''' 背景色を変更するボタン ''' </summary> ''' <param name="sender"></param> ''' <param name="e"></param> Private Sub btnChange_Click(sender As Object, e As EventArgs) Handles btnChange.Click ' テキストボックスに入力されている色情報を元に背景色を変更 If Me.txtRed.Text <> "" Then Me.intRed = CInt(Me.txtRed.Text) End If If Me.txtGreen.Text <> "" Then Me.intGreen = CInt(Me.txtGreen.Text) End If If Me.txtBlue.Text <> "" Then Me.intBlue = CInt(Me.txtBlue.Text) End If ' 読み取った値を背景色に当てはめる Me.BackColor = Color.FromArgb(intRed, intGreen, intBlue) End Sub |
iniファイルに書き込むボタン
ボタンを押したら、現在テキストボックスに入力されている値をiniファイルに書き込みます。
コードを下に示します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
''' <summary> ''' iniファイルに書き込む ''' </summary> ''' <param name="sender"></param> ''' <param name="e"></param> Private Sub btnWrite_Click(sender As Object, e As EventArgs) Handles btnWrite.Click ' 入力チェック If Me.txtRed.Text <> "" Then Me.intRed = CInt(Me.txtRed.Text) End If If Me.txtGreen.Text <> "" Then Me.intGreen = CInt(Me.txtGreen.Text) End If If Me.txtBlue.Text <> "" Then Me.intBlue = CInt(Me.txtBlue.Text) End If ' iniファイルへ書き込み clsIni.WriteIniString("COLOR", "Red", Me.intRed) clsIni.WriteIniString("COLOR", "Green", Me.intGreen) clsIni.WriteIniString("COLOR", "Blue", Me.intBlue) End Sub |
これにて完成です。
それでは、実行していきます。
実行編
プログラム実行時
iniファイルを読込むボタン押下時
背景色を変更するボタン押下時
値を適当に入力し、背景色を変更するボタンを押下
iniファイルに書込むボタンを押下
iniファイルへの書込み結果
まとめ
今回は、背景色を変更するアプリケーションを作成し、
しっくりきた時に値をiniファイルへ書き込めるようにしました。
iniファイルの活用の応用例としてやアプリケーションの背景色で悩まれている方に、
参考になれば嬉しいです。
背景色は大事!
最後までご覧いただきありがとうございます。
・参考になりそうなオススメVB.Net書籍
VisualBasic2019パーフェクトマスター (Perfect Master)
現場ですぐに使える! Visual Basic 2019 逆引き大全 500の極意
かんたん Visual Basic [改訂2版] (プログラミングの教科書)
作って覚えるVisual Basic 2019 デスクトップアプリ入門