отображать изображение при наведении курсора в форме окна? - PullRequest
6 голосов
/ 25 ноября 2011

Я работаю над проектом в c #, используя формы Windows.Я и группа, в которой я нахожусь, хотят сделать так, чтобы, когда пользователь наводит указатель мыши на изображение, в нашем случае на карточку, рядом с стрелкой мыши появлялось увеличенное изображение этой карточки, во многом аналогично инструментусовет будет работать.Я не думаю, что вы можете использовать подсказку, чтобы сделать это, я пытался искать везде, любые советы или примеры были бы хорошими, большое спасибо

Ответы [ 3 ]

7 голосов
/ 25 ноября 2011

Возможно, вы захотите взглянуть на эту статью проекта кода

. Здесь показано, как создать подсказку OwnerDrawn с изображением.

5 голосов
/ 25 ноября 2011

Спасибо за ответы, я все понял. Я хотел сделать так, чтобы при наведении на определенную область появлялось другое изображение для этой области точно так же, как подсказка. Поэтому после некоторого исследования я выяснил, как создать свой собственный класс подсказок.

вот пример.

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();
    }
}

}

2 голосов
/ 25 ноября 2011

Простой способ сделать это - скрыть / показать графический блок в указанном месте. Другой способ - загрузить и нарисовать (нарисовать) изображение, используя GDI API.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...