アンチエイリアス ラベル ユーザー コントロールを作成する方法

Cc440848.download(ja-jp,MSDN.10).gif サンプル コードのダウンロード (vbmigtips_AntiAlias.msi, 483 KB)

ラベルを使用し文字列を表示すると、フォントの種類や大きさによっては図1 のように綺麗に表示されない場合があります。

 Cc440848.AntiAlias_fig01(ja-jp,MSDN.10).jpg
 図1

このような場合、Visual Basic 6.0 ではビットマップなどでフォント画像を作成し、貼り付けることで綺麗なユーザーインターフェースを実現するのが一般的でした。しかし、この方法では、後から表示文字列を変更したくなった時に、またビットマップを作成する必要があり、非常に手間が掛かります。一方、Visual Basic .NET では、新しく Graphics オブジェクトがサポートされたことにより、より簡単に文字列をアンチエイリアス処理して表示することできるようになりました。アンチエイリアスは、文字の輪郭をなめらかに綺麗に表示させることができます。そこで今回は、Visual Basic .NET で、文字列に対してアンチエイリアス処理を行うラベル ユーザー コントロールを作成する方法を紹介します。このアンチエイリアス ラベル ユーザー コントロールを使用することで、綺麗な文字列を表示し、また、動的に文字列を変更したり、後から文字列を変更するのが非常に簡単になります。

文字列に対してアンチエイリアス処理する場合、Graphics オブジェクトの TextRenderingHint プロパティの設定によって行います。今回はアンチエイリアス処理を行うラベルを作成するため、ユーザーコントロールで実装を行います。

まず、[ファイル]メニューの[新規作成]の[プロジェクト]を選択し、[新しいプロジェクト]ダイアログを表示します。表示されたダイアログの[テンプレート]項目から「Windows コントロールライブラリ」を選択し、「プロジェクト名」と場所を指定して[OK]ボタンをクリックします。これでユーザーコントロールを作成するプロジェクトが作成されます。

作成されたプロジェクトの UserControl1.vb ファイルの「Labelnherits System.Windows.Forms.UserControl」を「Inherits System.Windows.Forms.Label」に変更します。そして、下記のコードを追加します。

Protected Overloads Overrides Sub OnPaint(ByVal e As PaintEventArgs)
e.Graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias
MyBase.OnPaint(e)
End Sub

リスト1

上記 (リスト1) の「e.Graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias」で、OnPaint の Graphics オブジェクトに対する文字列処理にアンチエイリアスを有効にします。これにより、文字列描画の品質が向上します。上記のコードを実装しビルドすると、アンチエイリアス処理された文字列を表示するユーザーコントロールが作成されます。

上記で作成したユーザーコントロールは、Windows アプリケーションの Form に IDE から貼り付けて使用します。Form に貼り付けたユーザーコントロールは、すべての文字列に対してアンチエイリアス処理が行われます。図1 の フォームに作成したユーザーコントロールを貼り付けた結果、図2 (下部の文字列「あいうABCDEFG」) のように表示されます。

 Cc440848.AntiAlias_fig02(ja-jp,MSDN.10).jpg
 図2

このように、Graphics オブジェクトの TextRenderingHint プロパティを設定することで文字列に対してアンチエイリアス処理を行うことができ、綺麗に表示することができます。そんなアンチエイリアス処理は文字列に対してだけでなく直線や曲線などの描画時にも行うことができます。直線や曲線などに対してアンチエイリアス処理を行う場合は、Graphics オブジェクトの SmoothingMode プロパティの値を変更します。