2012-04-22 66 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事件并自己绘制图像。