我刚刚开始为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