我剛剛開始爲C#應用程序開發Winforms GUI,並且想知道以下是否可能?C#Winforms。將鼠標指針上的較小圖像覆蓋到圖片框上
我希望在圖片框中顯示大圖片(輕鬆完成),然後在鼠標指針位於較大圖片上時,將第二個較小圖片疊加到鼠標位置的大圖片上。如果可能的話,我希望覆蓋圖像部分透明。
由於GUI設計處於早期階段,我可以將其更改爲WPF,如果這會使我所要求的更容易。
非常感謝,
Andy。
我剛剛開始爲C#應用程序開發Winforms GUI,並且想知道以下是否可能?C#Winforms。將鼠標指針上的較小圖像覆蓋到圖片框上
我希望在圖片框中顯示大圖片(輕鬆完成),然後在鼠標指針位於較大圖片上時,將第二個較小圖片疊加到鼠標位置的大圖片上。如果可能的話,我希望覆蓋圖像部分透明。
由於GUI設計處於早期階段,我可以將其更改爲WPF,如果這會使我所要求的更容易。
非常感謝,
Andy。
這是一個一行中的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來說是微不足道的;只需在<Canvas>
中製作第二個<Image>
即可。
在WinForms中,您需要處理PictureBox的Paint
事件並自己繪製圖像。
這正是我想要的 - 非常感謝! – 2012-04-22 19:43:14