.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」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間