.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に設定してガンマ補正をかけることにより、グラデーションを明るくすることができる。End of Article

カテゴリ:Windowsフォーム 処理対象:Buttonコントロール
使用ライブラリ:Buttonクラス(System.Windows.Forms名前空間)
使用ライブラリ:Bitmapクラス(System.Drawing名前空間)
使用ライブラリ:LinearGradientBrushクラス(System.Drawing.Drawing2D名前空間)

この記事と関連性の高い別の.NET TIPS
Windowsフォームで円を描くには?
Windowsフォームで四角を描くには?
Windowsフォームで簡単に画像を表示するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」

TechTargetジャパン

Insider.NET フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ

- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH