2012-04-22 81 views
0

我剛剛開始爲C#應用程序開發Winforms GUI,並且想知道以下是否可能?C#Winforms。將鼠標指針上的較小圖像覆蓋到圖片框上

我希望在圖片框中顯示大圖片(輕鬆完成),然後在鼠標指針位於較大圖片上時,將第二個較小圖片疊加到鼠標位置的大圖片上。如果可能的話,我希望覆蓋圖像部分透明。

由於GUI設計處於早期階段,我可以將其更改爲WPF,如果這會使我所要求的更容易。

非常感謝,

Andy。

回答

3

這是一個一行中的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); 
+0

這正是我想要的 - 非常感謝! – 2012-04-22 19:43:14

2

這對於WPF來說是微不足道的;只需在<Canvas>中製作第二個<Image>即可。

在WinForms中,您需要處理PictureBox的Paint事件並自己繪製圖像。