0

C#アプリケーション用のWinforms GUIの開発を始めたばかりで、次のことが可能かどうか疑問に思っていましたか?

大きな画像をピクチャーボックスに表示し(簡単に実行できます)、マウスポインターが大きな画像の上にあるときに、マウスの位置で大きな画像に2番目の小さな画像をオーバーレイします。可能であれば、オーバーレイ画像を部分的に透明にします。

GUIの設計は初期段階にあるので、これで私が求めていることが簡単になる場合は、WPFに変更できます。

どうもありがとう、

アンディ。

4

2 に答える 2

4

これは 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);
于 2012-04-22T19:09:42.830 に答える
2

これは、WPF では些細なことです。<Image>で1秒を作るだけ<Canvas>です。

PaintWinForms では、PictureBox のイベントを処理し、自分で画像を描画する必要があります。

于 2012-04-22T18:10:07.653 に答える