C#アプリケーション用のWinforms GUIの開発を始めたばかりで、次のことが可能かどうか疑問に思っていましたか?
大きな画像をピクチャーボックスに表示し(簡単に実行できます)、マウスポインターが大きな画像の上にあるときに、マウスの位置で大きな画像に2番目の小さな画像をオーバーレイします。可能であれば、オーバーレイ画像を部分的に透明にします。
GUIの設計は初期段階にあるので、これで私が求めていることが簡単になる場合は、WPFに変更できます。
どうもありがとう、
アンディ。
これは Winforms のワンライナーです。PictureBox.Cursor プロパティを変更するだけです。
pictureBox1.Cursor = new Cursor(new MemoryStream(Properties.Resources.ExampleCursor));
任意の画像が必要な場合は、ビットマップをカーソルに変換する必要があります。それを行うための小さなヘルパー関数:
using System.Reflection;
...
private static Cursor CursorFromBitmap(Bitmap bmp) {
var hicon = bmp.GetHicon();
var cursor = new Cursor(hicon);
var fi = typeof(Cursor).GetField("ownHandle", BindingFlags.NonPublic | BindingFlags.Instance);
fi.SetValue(cursor, true);
return cursor;
}
ハンドルを追跡して明示的に破棄する必要がないように、リフレクションのトリックを使用します。次のように使用します。
pictureBox1.Cursor = CursorFromBitmap(Properties.Resources.ExampleImage);
これは、WPF では些細なことです。<Image>
で1秒を作るだけ<Canvas>
です。
Paint
WinForms では、PictureBox のイベントを処理し、自分で画像を描画する必要があります。