面板上显示的图标平滑移动

时间:2009-11-14 01:16:14

标签: c# winforms .net-3.5 graphics

我正在编写一个应用程序,我在System.Windows.Forms.Panel上使用类似的代码显示System.Drawing.Icon对象:

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

我有使用拖放功能移动图标的代码。 我的问题是,当用户移动图标时,它是平滑的。 图标看起来很扭曲,直到用户停止移动图标。

我试图在网上找到这方面的信息,但我不能让它顺利。 我以前很少有这种特殊编码的经验(使用图形)所以我是这个的新手。

如果有任何善良的灵魂可以帮助我提供一些提示,那将非常感激。

提前致谢!

1 个答案:

答案 0 :(得分:0)

我相信你要做的是在MouseMove事件处理程序上重绘控件。看起来你的问题是重绘面板时的闪烁。首先,您可以尝试将true设置为面板的DoubleBuffered属性。这样做可以将面板设置为使用辅助缓冲区重绘其表面,以减少或防止闪烁。此属性受保护,因此您需要创建一个新的面板后代:

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

作为替代方案,您可以通过反射

为面板设置DoubleBuffered属性

希望这有帮助,尊重