ダウンロード ソースコード (233.8 KB)
Graphicsオブジェクトのメソッドを使って、さまざまなフォントでテキストを描画する方法を説明します。クリッピング、折り返し、位置合わせ、伸縮、回転といった多様な技法も紹介します。
はじめに
Visual Basic 6でテキストを描画するのは、プロセスも結果も非常に単純でした。まずフォームまたはPictureBoxのCurrentXプロパティとCurrentYプロパティを設定し、それからPrintメソッドを呼び出します。
それに対し、.NETが提供するテキスト描画ツールはもっと強力です。ただし、能力が増大すれば複雑さも増すものです。.NETではテキストに対して驚くほど多様な操作を行えますが、それだけ学ぶべきことも多くあります。まずは単純なテキスト表示から始めて、フォントや位置合わせの変更、クリッピング、折り返し、シェーディング、変形・移動といった新たな技法を少しずつ覚えていけば、しだいに.NETのテキスト表示機能に精通するようになるでしょう。
本稿のサンプルコードには、これらの技法の具体例を示す一連の小さなアプリケーションが含まれています。このコードをそのまま使用することもできますし、これをテンプレートとして使用して、独自のアプリケーションを作成してもよいでしょう。なお、本稿の例ではVB.NETを使用していますが、ダウンロードできるサンプルコードにはVB.NETバージョンとC#バージョンが含まれています。
.NETにおけるテキストの基礎
.NETアプリケーションでテキストを描画するときは、必ずGraphicsオブジェクトが必要になります。このオブジェクトには、テキストはもとより、直線、多角形、曲線、イメージを描画するのに必要なツールが備わっています。テキストはDrawStringメソッドで描画します。
.NETのグラフィックスで素晴らしいことの1つは、Graphicsオブジェクトを使って何にでも描画できることです。描画する対象はフォーム、PictureBox、オーナー描画メニュー、プリンタ、あるいはもっと風変わりなものでもかまいません。つまり、1種類の描画方法を学べば、後はどんなサーフェスへの描画操作も同じように行えるということです。
本稿の例では、フォームのPaintイベントハンドラで描画を行っています。このイベントハンドラのe.Graphicsパラメータが、描画すべきグラフィックスオブジェクトを提供します。
.NETのテキスト描画ツールは複雑かもしれませんが、テキストを最も単純な形で描画するのは難しくありません。例えば、フォームのPaintイベントハンドラの中に次のコードを記述すれば、フォームの左上隅からのピクセル数として指定した点(10, 10)に「BasicText」というテキストを描画できます。テキストはフォームの現在のフォントで描画され、ブルーになります。このコードはVB.NETのものですが、サンプルコードにはVB.NETバージョンとC#バージョンが含まれています。
e.Graphics.DrawString("BasicText", Me.Font, Brushes.Blue, 10, 10)
このコードを使うのは非常に簡単です。デザイン時にフォームのフォントを変更すれば、テキストを好みのフォントで描画できます。ただし、描画するテキストがすべて同じフォントになるという難点があります。
この問題に対処するため、次のような少しだけ複雑なバージョンで、このわずかなテキストのために独自のフォントを用意します。このコードは、24ポイントのボールドのComic Sans MSフォントを作成する、Usingステートメントで始まります。Usingステートメントの後のEnd Usingステートメントに達すると、VB.NETによってそのフォントのDisposeメソッドが自動的に呼び出されます。フォントを作成した後は、先ほどのコードと同じようにDrawStringを呼び出しますが、今度は新しいフォントを渡す点が異なります。
Using the_font As New Font("Comic Sans MS", 24, FontStyle.Bold) e.Graphics.DrawString("BasicText", the_font, _ Brushes.Blue, 10, 20) End Using
図1は、この2つのDrawString呼び出しの結果を示しています。GraphicsオブジェクトのDrawStringメソッドはテキストを描画し、フォームのフォントを使用することも、カスタムフォントを作成することもできます。

DrawStringはキャリッジリターンやタブなどの特殊文字も処理します。図2は前記の例と同じような描画コードの実行結果ですが、この例ではキャリッジリターンとラインフィードの対およびタブを含んだテキストを描画しています。DrawStringはキャリッジリターンとラインフィードの組み合わせで新しい行を開始し、タブで水平スペースを追加します。
VB.NETバージョンでは"The quick brown fox" & vbCrLf & "jumps over" & vbTab & "the lazy dog"という文字列を描画し、C#バージョンでは"The quick brown fox\njumps over\tthe lazy dog"という文字列を描画します。

この記事は参考になりましたか?
- japan.internet.com翻訳記事連載記事一覧
- この記事の著者
-
japan.internet.com(ジャパンインターネットコム)
japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.com や EarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
Rod Stephens(Rod Stephens)
10冊以上の書籍と200点以上の雑誌記事の著者にしてコンサルタント。著作の大部分はVisual Basicに関するものである。これまで、修復ディスパッチ、燃料税トラッキング、プロフェッショナルなフットボールトレーニング、廃水処理、地図作成、チケット販売などの種々雑多なアプリケーションに従事してきた。彼のWebサイト「VB Helper」は、1か月に7百万以上のヒットを記録しており、Visual Basicプログラマ向けに3つのニューズレターと何千ものヒントや例を提供している。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
