C#でカーソルの大きさを変更する方法

ここではカーソルをカラーカーソルにして大きさも変更しました。ところがこれをスクリーンキャプチャしようとしてもうまくいきませんでした。

マウスカーソルはPrtScキーを押してもキャプチャされません。よくやる方法が以下の方法です。

しかしカーソルの色は保存されますが、サイズは拡大する前の大きさです。Cursor.Sizeプロパティをつかってもサイズは反映されていません。Cursor.Sizeでカーソルのサイズが正しく取得できないのでこれではうまくいかないのは当然です。

そこで別の方法を考えます。

下の方法はAPI関数GetIconInfo関数を用いてカーソルからビットマップを取得して、その大きさを調べています。

CursorExクラス全体は

C#でカーソルの大きさを変更する方法

を参照してください。

これなら以下の方法でキャプチャできます。

ところでもうひとつ問題があります。マウスカーソルを大きくすると影のような四角い境界線がみえてしまうことです。

原因は、元の画像の座標系の原点が画素の中心部分にあるからです。

【C#】画像の座標系 | イメージングソリューション

この問題は、最初にビットマップ全体を透明にしたい色で塗りつぶすことで解消できます。