在Windows窗体中鼠标悬停显示图像

本文关键字:显示 显示图 图像 悬停 鼠标 Windows 窗体 | 更新日期: 2023-09-27 18:15:46

我正在做一个使用windows窗体的c#项目。我和我所在的小组希望这样,当用户将鼠标悬停在图像(在我们的例子中是一张卡片)上时,该卡片的一个更大的图像会出现在鼠标箭头旁边,这与工具提示的工作方式非常相似。我不认为你可以用一个工具提示来做到这一点,我试着到处找,如有任何建议或例子,非常感谢

在Windows窗体中鼠标悬停显示图像

您可能想看看这篇代码项目文章

它向您展示了如何使用图像创建OwnerDrawn工具提示。

谢谢你的回复,我把一切都弄明白了。我想做的是,当我将鼠标移到某个区域时,该区域的不同图像会以与工具提示相同的方式弹出。因此,经过一番研究,我想出了如何创建自己的工具提示类。

这里有一个例子。

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        CustomToolTip tip = new CustomToolTip();
        tip.SetToolTip(button1, "text");
        tip.SetToolTip(button2, "writing");
        button1.Tag = Properties.Resources.pelican; // pull image from the resources file
        button2.Tag = Properties.Resources.pelican2;       
    }
}
class CustomToolTip : ToolTip
{
    public CustomToolTip()
    {
        this.OwnerDraw = true;
        this.Popup += new PopupEventHandler(this.OnPopup);
        this.Draw +=new DrawToolTipEventHandler(this.OnDraw);
    }
    private void OnPopup(object sender, PopupEventArgs e) // use this event to set the size of the tool tip
    {
        e.ToolTipSize = new Size(600, 1000);
    }
    private void OnDraw(object sender, DrawToolTipEventArgs e) // use this to customzie the tool tip
    {
        Graphics g = e.Graphics;
        // to set the tag for each button or object
        Control parent = e.AssociatedControl;
        Image pelican = parent.Tag as Image;
        //create your own custom brush to fill the background with the image
        TextureBrush b = new TextureBrush(new Bitmap(pelican));// get the image from Tag
        g.FillRectangle(b, e.Bounds);
        b.Dispose();
    }
}

}

一种简单的方法是在指定位置隐藏/显示图片框。另一种方法是加载&使用GDI API绘制(绘制)图像