如何在C#中清除屏幕区域或重绘屏幕

时间:2010-01-15 08:14:16

标签: c# gdi+

我在C#.Net 2.0中创建用户控件。 我必须在这些控件之间应用拖放图像。 我做了拖放效果。

但问题是我必须在鼠标拖动时显示控制运动。 为此,我在ControlDraw.DrawReversibleFrame()的帮助下在屏幕上绘制一个矩形

问题在于,使用鼠标移动事件绘制时,整个屏幕上绘制了矩形,因为屏幕上没有重新绘制它。

所以请任何人告诉我如何清除绘制的图形或如何强制重绘屏幕。

1 个答案:

答案 0 :(得分: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;
}

但总的来说,我建议将鼠标光标更改为拖放图标或图像的缩略图会更合适。

相关问题