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)

==============================

みたいな感じですね。


今回はこんな感じですかね。

応用は分からないので、良い感じに調べてください。


以上です。長文、読んでいただきありがとうございました。

良いプログラミングライフを~

Lifeline'sApp

私生命線(@userlifeline)がTwitterにて行っている私の自作ソフトについてのサイトです。 ページに関する問題は@userlifelineにお願いします。

0コメント

  • 1000 / 1000