Как очистить область экрана или перерисовать экран в C # - PullRequest
2 голосов
/ 15 января 2010

Я создаю пользовательский элемент управления в C # .Net 2.0. Я должен применить перетаскивание изображений между этими элементами управления. Я сделал эффект перетаскивания.

Но проблема в том, что я должен показывать движение элемента управления при перетаскивании мышью. Для этого я рисую прямоугольник на экране с помощью ControlDraw.DrawReversibleFrame ()

Проблема в том, что при рисовании с помощью мыши событие перемещения Rectangle рисуется по всему экрану, и, поскольку на экране нет перерисовок, оно существует на экране.

Так что, пожалуйста, кто-нибудь может сказать мне, как очистить нарисованную графику или как заставить перерисовать экран.

1 Ответ

1 голос
/ 15 января 2010

Вы должны нарисовать «обратимый» кадр в том же положении, что и ранее, чтобы перевернуть его, прежде чем рисовать следующий кадр в новом положении.

Псевдокод:

bool prev_rev_frame = false;
Rect prev_rev_rect;

...

void on_mouse_move() {
  if(prev_rev_frame)
    Control.drawReversableFrame(prev_rev_rect);
  Rect new_rev_rect = ....
  Control.drawReversableFrame(new_rev_rect);
  prev_rev_frame = true;
  prev_rev_rect = new_rev_rect;
}

Но в целом, я рекомендую изменить курсор мыши на значок перетаскивания или уменьшенное изображение, было бы гораздо более подходящим.

...