Как очистить область экрана или перерисовать экран в C #

2

Я создаю User Control в С#.Net 2.0. Я должен применять drag and Drop Images между этими элементами управления. Я сделал эффект перетаскивания.

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

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

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

  • 0
    Вы имеете в виду, что когда вы перетаскиваете что-то и наводите мышь на элемент управления (левой кнопкой вниз), вы хотите видеть прямоугольник, отображаемый на элементе управления чуть ниже мыши? Этот прямоугольник будет двигаться с помощью мыши, пока вы не уроните его поверх него?
  • 0
    Я хочу перетащить элемент управления и перейти на панель лайков. Так что для показа элемента управления перетаскивание я хочу показать прямоугольник того же размера, что и элемент управления.
Теги:
gdi+

1 ответ

1
Лучший ответ

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

Псевдокод:

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

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

  • 0
    спасибо Will, ControlPaint.DrawReversibleFrame () - Рисует рамку на экране с цветом, обратным его фону. Здесь у меня нет проблем. Я могу изменить курсор мыши, но это не мое требование. Требуется показать, что пользовательский элемент управления перетаскивается. Спасибо

Ещё вопросы

Сообщество Overcoder
Наверх
Меню