|
.NET TIPS
グラデーションのかかったボタンを作成するには?[C#、VB]
デジタルアドバンテージ 遠藤 孝信
2008/09/11 |
|
|
Windowsフォームで使用するボタン(System.Windows.Forms名前空間のButtonクラス)には、ボタンの背景に表示されるイメージを設定するためのImageプロパティが用意されている。
このImageプロパティに、グラデーションで塗りつぶしたビットマップを設定することにより、次の画面のようなグラデーションのかかったボタンを簡単に作成することができる。
|
グラデーションのかかったボタンの例 |
|
グラデーションで塗りつぶしたビットマップを作成するには、まずBitmapクラス(System.Drawing名前空間)のオブジェクトを作成して、そのGraphicsオブジェクトを取得し、それをグラデーション・ブラシであるLinearGradientBrushクラス(System.Drawing.Drawing2D名前空間)のオブジェクトを使って塗りつぶす。
次のコードでは、フォームのLoadイベント・ハンドラでこの処理を行っている。なお、このコードを実際に試すには、Visual StudioでWindowsフォーム・アプリケーションのプロジェクトを新規作成し、フォームにボタンを1つ配置しておく必要がある。
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Drawing.Drawing2D;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
// ビットマップとGraphicsオブジェクトの作成
Bitmap bmp = new Bitmap(button1.Width, button1.Height);
Graphics g = Graphics.FromImage(bmp);
// グラデーション・ブラシの作成
LinearGradientBrush gradBrush = new LinearGradientBrush(
g.VisibleClipBounds, // ビットマップの領域サイズ
Color.Red, // 開始色
Color.Yellow, // 終了色
LinearGradientMode.Vertical); // 縦方向にグラデーション
// ビットマップをグラデーション・ブラシで塗る
g.FillRectangle(gradBrush, g.VisibleClipBounds);
gradBrush.Dispose();
g.Dispose();
// ビットマップをボタンの背景にセット
button1.Image = bmp;
}
}
}
|
Imports System.Drawing.Drawing2D
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' ビットマップとGraphicsオブジェクトの作成
Dim bmp As New Bitmap(Button1.Width, Button1.Height)
Dim g As Graphics = Graphics.FromImage(bmp)
' グラデーション・ブラシの作成
Dim gradBrush As New LinearGradientBrush( _
g.VisibleClipBounds, _
Color.Red, _
Color.Yellow, _
LinearGradientMode.Vertical)
' ビットマップをグラデーション・ブラシで塗る
g.FillRectangle(gradBrush, g.VisibleClipBounds)
gradBrush.Dispose()
g.Dispose()
' ビットマップをボタンの背景にセット
Button1.Image = bmp
End Sub
End Class
|
|
グラデーション・ボタンを表示するフォーム(上:C#、下:VB) |
Visual StudioでWindowsフォーム・アプリケーションのプロジェクトを新規作成し、フォームにボタンを1つ配置してから、フォームをダブルクリックして書き込む。 |
このコードでは赤色から黄色へのグラデーションを作成しているが、グラデーションの中央部分が暗くなってしまう場合には、LinearGradientBrushオブジェクトのGammaCorrectionプロパティをtrueに設定してガンマ補正をかけることにより、グラデーションを明るくすることができる。
カテゴリ:Windowsフォーム 処理対象:Buttonコントロール
使用ライブラリ:Buttonクラス(System.Windows.Forms名前空間)
使用ライブラリ:Bitmapクラス(System.Drawing名前空間)
使用ライブラリ:LinearGradientBrushクラス(System.Drawing.Drawing2D名前空間)
|
|
generated by
|
|
Insider.NET 記事ランキング
本日
月間