PictureBoxに文字を書きたかった話
最近、プログラミングをされてる方の多くが、文字の表示方法をLabelによる比較的アナログな方法からPictureBoxに表示する比較的デジタルの方向に進んでいて、これは私もこのビッグウェーブに乗らなければと思い、作ってみたということです。
あ、今回の記事はC#限定のそれもまぁまぁマニアックなものですので、「ほーん、そんな感じなのね。」みたいな感じで見てくれればいいです。(僕も素人なので詳細は全く不明です。)
じゃぁ、まずはLabelではなく、PictureBoxに書く利点ですが、
1. 表示のラグがない。
2. フォントの設定項目が豊富。
3. 中央に表示するのが簡単。
ですね。(僕の中ではこの3つの利点から作りました。)
それぞれについて解説しますと、
【1. 表示のラグがない(小さい)】
>> 最初にPictureBoxに書こうと思った理由です。本当にこれは便利。PCの処理が重たくなるとLabelの文字を変えるのもとてつもない時間がかかったりします。ですが、PictureBoxに表示するときは、先に文字を設定して、表示の用意ができてから表示する。みたいな処理が行われているみたいです。(プログラムを書いた感じ。)
【2.フォントの設定項目が豊富】
>> 今回試しに作ってみたときは使いませんでしたが、PictureBoxに表示させる文字は例えば...PowerPointで文字を設定するとき見たいにグラデーションをかけたりできるらしいです。(やり方? 分かりません!(自信満々))
【3. 中央に表示するのが簡単】
>> これも大事です。Labelで中央に表示させようとしたら、例えば...Label.Lenghで表示されている文字数に対して、Label.Leftで文字のX座標を変更するとか、スペースで何とか中央に表示させるとか... 半ば強引に表示させないといけませんが... PictureBoxでは! なんと!
「~.Center」という中央に表示させるためだけのプロパティがあるのです!
本当にこれは便利。これも便利。
というように、表示させるのは少し手間ですが、利点がたくさんあります!
『是非! この機会にLabelからPictureBoxに切り替えませんか!?』
取り乱しました。それではコードの説明に行きますね。
(今回のコードは「Dobon.net」さんのコードを参考に作らせていただきました。もし、私の説明が分からなかったら「文字を描く - .Net Tips (VB.Net, C#...)」をご覧ください!)
まず、コードをずらずらと書きますね...
そしたら、説明ですね。
コメントを見たら大体わかるかもしれませんが、一つずつ説明します。
最初の2行は「BitMap」クラスを作っている部分です。右辺(new ~)は詳細情報を設定しています。括弧の中はBitmapのサイズを指定しています。2行あるのは表示したいPictureBoxが2つあったからですね。
次の2行は「Graphics」クラスを作っている部分ですね。BitMapで作られたものを画像として作っています。(詳細は分からないです。こんな感じかぁ...で大丈夫です。)
その次は「Font」を設定していますね。『new Font("<フォント名>", <フォントの大きさ>, <フォントのスタイル(太字、斜体、下線)>)』を指定しています。
次が大事なところです!コメントの通り、『文字を中心に描くよう指定しています』!
これがないと、左上に表示させるようになっちゃいます...
あとは、文字を用意させてます。
『~("<表示させる文字>"), <フォント>, <文字色>, <PictureBoxの名前.ClientRectangle>, <stringFormat>』
んで、文字の用意はできました。次は表示です。
『<表示させたいPictureBox名>.Image = <最初のBitMap名>』
はい、終わり。表示はここで終わりです。
後は、消す方法ですが、ちょっとこれは直感的には分かりにくいですね...
まぁ、プログラムには書かれているんですけどね。
この画像の一番下ですね。
『g.Clear(c)』
これで文字を消すことができます。
「消す」という表現は正しくないですね。「上書きする」という方が正しいです。
Windowsではどうも、消すという概念がないみたいです。
そのため、画像に画像を重ねる方法をとっています。
なので、Clearの括弧には『Color』を入れてください。
あ、『g』は、Bitmapの名前の入れてくださいね。
例えば...
==============================
背景が黒の場合:g.Clear(Color.Black)
背景が白の場合:g.Clear(Color.White)
背景が青の場合:g.Clear(Color.Blue)
==============================
みたいな感じですね。
今回はこんな感じですかね。
応用は分からないので、良い感じに調べてください。
以上です。長文、読んでいただきありがとうございました。
良いプログラミングライフを~
0コメント