フォームのバックグラウンドをグラデーションする方法
最終更新日 2005 年 9 月 29 日
サンプル
コードのダウンロード (vbmigtips_Gradation.msi, 471 KB)
GotDotNet からダウンロードできる Visual Basic Power Pack には、BlendPanel コントロールというのがあります。このコントロールを使用すれば、簡単にグラデーションすることができます。しかし、BlendPanel コントロールをフォームに貼らなくてはなりません。そこで今回は、図1 のように、フォームを直接グラデーションする方法を紹介します。
図1
Visual Basic 6.0 では、グラデーションを行うためのメソッドなどがサポートされていなかったため、独自で描画する必要がありました。一方、Visual Basic .NET では、LinearGradientBrush クラスを使用することで、簡単に実装することができます。実装コードは以下のとおりです。
Dim mode As
System.Drawing.Drawing2D.LinearGradientMode =
Drawing2D.LinearGradientMode.Horizontal Private Sub Form1_Paint(ByVal
sender As Object, ByVal e As
System.Windows.Forms.PaintEventArgs) Handles
MyBase.Paint
DrawForm(e.Graphics,
mode)
End Sub Private Sub DrawForm(ByVal g As
Graphics, ByVal mode As
System.Drawing.Drawing2D.LinearGradientMode)
Try
Dim myLGBrush
As System.Drawing.Drawing2D.LinearGradientBrush = New
System.Drawing.Drawing2D.LinearGradientBrush(Me.ClientRectangle,
Color.Blue, Color.White, mode)
g.FillRectangle(myLGBrush,
Me.ClientRectangle)
Catch ex As
Exception
End Try
End
Sub |
リスト1 の「Dim mode As System.Drawing.Drawing2D.LinearGradientMode = Drawing2D.LinearGradientMode.Horizontal」でグラデーションする方向を「左から右 (Horizontal) 」に指定します。Form1_Paint イベントハンドラの「DrawForm(e.Graphics, mode)」では、DrawForm メソッドを使用してフォームにグラデーションイメージを描画します。DrawForm メソッドの「Dim myLGBrush As System.Drawing.Drawing2D.LinearGradientBrush = New System.Drawing.Drawing2D.LinearGradientBrush(Me.ClientRectangle, Color.Blue, Color.White, mode)」で、グラデーション ブラシを作成し、「g.FillRectangle(myLGBrush, Me.ClientRectangle)」でグラデーションした四角形の描画を行います。これにより、フォームのバッググラウンドがグラデーションされます。上記を実装し、実行すると、図1 のように表示されます。
上記では、グラデーションする方向を「左から右 (Horizontal) 」に指定しましたが、他にも「上から下 (Vertical) 」「右上から左下 (BackwardDiagonal) 」「左上から右下 (ForwardDiagonal) 」と方向を変更することができます。今回、メニューによってグラデーションする方向を変更できるようにします。実装コードは以下のとおりです。
Private Sub MenuItem_Click(ByVal
sender As System.Object, ByVal e As System.EventArgs) Handles
MenuItem2.Click, MenuItem3.Click, MenuItem4.Click,
MenuItem5.Click
Select Case
CType(sender, RadioButton).TabIndex
Case 0
mode =
Drawing2D.LinearGradientMode.Horizontal
Case 1
mode =
Drawing2D.LinearGradientMode.Vertical
Case 2
mode =
Drawing2D.LinearGradientMode.BackwardDiagonal
Case 3
mode =
Drawing2D.LinearGradientMode.ForwardDiagonal
End
Select
DrawForm(Me.CreateGraphics(),
mode)
End
Sub |
上記を実装し、[グラデーションの向き]メニューの[横]を選択すると、図1 のように左から右の方向にグラデーションされ、[縦]を選択すると、図2 のように、上から下の方向にグラデーションされます。
図2
[グラデーションの向き]メニューの[右上対角線]を選択すると、図3 のように、右上から左下の方向にグラデーションされます。
図3
[グラデーションの向き]メニューの[右下対角線]を選択すると、図4 のように、左上から右下の方向にグラデーションされます。
図4