Небольшие проблемы при динамическом изменении размера окна изображения (задержка всплывающей подсказки, «мигание») - PullRequest
0 голосов
/ 31 августа 2018

Помогите пожалуйста элегантно решить пару проблем в моем небольшом проекте. Я разрабатываю небольшую программу на C # (WinForms), которая использует картинки вместо кнопок. Я добавил к ним небольшую функцию, такую ​​как «анимация»: при наведении на них мышки они уменьшаются в размере, а когда мышь исчезает, они возвращаются в исходное состояние. На самом деле у меня есть две проблемы:

  1. Если мышь подвести к самому краю, изображение будет уменьшено, но если размер мыши не соответствует текущему размеру окна изображения, его размер будет возвращен обратно. И так далее. Такое «мерцание» получается.
  2. И что еще более важно, у меня есть подсказки, прикрепленные к этим картинкам. И если вы наведете указатель мыши на графический блок, он уменьшится в размере, и всплывающая подсказка не будет вызвана. Потребуется немного переместить курсор, не выходя за пределы рамки для отображения всплывающей подсказки. И это поведение нелогично.

Вот код:

    private void IconReduce(PictureBox picturebox)
    {
        originalLocation = picturebox.Location;
        originalSize = picturebox.Size;
        picturebox.Location = new Point(picturebox.Location.X + 2, picturebox.Location.Y + 2);
        picturebox.Size = new Size(picturebox.Size.Width - 4, picturebox.Size.Height - 4);
    }

    private void IconNormal(PictureBox picturebox)
    {
        picturebox.Location = new Point(originalLocation.X, originalLocation.Y);
        picturebox.Size = new Size(originalSize.Width, originalSize.Height);
    }

    private void pb_MouseEnter(object sender, EventArgs e)
    {
        IconReduce(sender as PictureBox);
    }

    private void pb_MouseLeave(object sender, EventArgs e)
    {
        IconNormal(sender as PictureBox);
    }
...