Плавное движение значка отображается на панели - PullRequest
0 голосов
/ 14 ноября 2009

Я кодирую приложение, в котором отображаю объект System.Drawing.Icon на System.Windows.Forms.Panel, используя код, который выглядит примерно так:

Graphics g = _panel.CreateGraphics();
g.DrawIcon(this.NodeIcon, _rectangle);

У меня есть код для перемещения значка с помощью перетаскивания. Моя проблема в том, что когда пользователь перемещает значок, это не так гладко. Значок выглядит искаженным до тех пор, пока пользователь не перестанет перемещать значок.

Я пытался найти информацию об этом в сети, но не могу сделать ее гладкой. У меня мало опыта в этом конкретном виде кодирования (с использованием графики), поэтому я новичок в этом.

Если бы какая-нибудь добрая душа могла помочь мне с некоторыми намеками, это было бы очень ценно.

Заранее спасибо!

1 Ответ

0 голосов
/ 14 ноября 2009

Полагаю, вы пытаетесь перерисовать свой элемент управления в обработчике событий MouseMove. И, похоже, ваша проблема - это мерцание при перерисовке панели. Первое, что вы можете попытаться сделать, - установить для свойства DoubleBuffered вашей панели значение true. Делая это, вы устанавливаете панель для перерисовки ее поверхности, используя вторичный буфер для уменьшения или предотвращения мерцания. Это свойство защищено, поэтому вам необходимо создать новый потомок панели:

public class TestPanel : Panel
{
  public TestPanel()
  {
     DoubleBuffered = true;
  }
}

в качестве альтернативы вы можете установить свойство DoubleBuffered для вашей панели с помощью отражения

надеюсь, это поможет, с уважением

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