ヘッダー
C# サンプル集
 

マウスカーソルを独自のものにする

2022/1/30

→ Visual Basic のサンプルに切り替える

この記事は Windows フォーム アプリ を対象にしています。

 

 

マウスカーソルを動的に描画する

const int size = 64;

using (var bmp = new Bitmap(size, size))
{
    //▼グラフィックを描画(この段階ではメモリ上で描画され、どこにも表示されません。)
    using (Graphics g = Graphics.FromImage(bmp))
    {
        g.Clear(Color.Transparent); //背景を透明にする
        g.DrawEllipse(Pens.Red, 0, 0, size - 1, size - 1);
        g.DrawRectangle(Pens.Black, 0, 0, size - 1, size - 1);
        g.DrawString("✈", new Font(this.Font.FontFamily, 20), Brushes.Orange, 0, 0);
    }
    
    //▼描画したグラフィックをマウスカーソルに設定
    this.Cursor = new Cursor(bmp.GetHicon());
}

メモ:通常のマウスカーソルに戻す方法は、this.Cursor = Cursors.Default; です。

 

 

.icoファイル・.curファイルを読み込んでカスタムなマウスカーソルを表示する

前提:この例を実行するには C:\temp\original.cur という名前でマウスカーソルファイル(ポインターファイル)が存在している必要があります。

var myCursor = new Cursor(@"C:\temp\original.cur");
this.Cursor = myCursor;

メモ:icoファイルはインターネットなどで有志が作成されたものが公開されています。「Windows アイコン ダウンロード」などで検索すると見つけられます。

メモ:オリジナルのアイコンを作成するソフトもあります。Visual Studio でも[ファイル] - [新規作成] - [ファイル] - [アイコンファイル]で .ico ファイルを作成できます。

メモ:curファイルはインターネットなどで有志が作成されたものが公開されています。「マウスカーソル ダウンロード」などで検索すると見つけられます。

メモ:オリジナルのマウスカーソルを作成するソフトもあります。Visual Studioでも[ファイル] - [新規作成] - [ファイル] - [カーソルファイル]で .cur ファイルを作成できます。

メモ:拡張子 .ani のアニメーションカーソルはこの方法では読み込めません。

 

 

PNG や GIF や JPEG を読み込んでカスタムなマウスカーソルとして表示する

前提:この例を実行するには C:\temp\original.png という名前で画像ファイルが存在している必要があります。

const int size = 64;

using (var bmp = new Bitmap(size, size))
{
    //▼画像を描画(この段階ではメモリ上で描画され、どこにも表示されません。)
    using (Graphics g = Graphics.FromImage(bmp))
    {
        using (var img = Image.FromFile(@"C:\temp\original.png"))
        {
            g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
            g.DrawImage(img,
                        new Rectangle(0, 0, size, size),
                        new Rectangle(0, 0, img.Width, img.Height),
                        GraphicsUnit.Pixel);
        }
    }

    //▼描画したグラフィックをマウスカーソルに設定
    this.Cursor = new Cursor(bmp.GetHicon());
}

メモ:通常のマウスカーソルに戻す方法は、this.Cursor = Cursors.Default; です。