【问题标题】:Double Buffer a custom control in the Compact FrameworkDouble Buffer Compact Framework 中的自定义控件
【发布时间】:2011-02-18 04:19:51
【问题描述】:

我有一个继承自Panel 的自定义控件。我最终在这个面板上放置了几个 DataGrids 和 Labels。当它变得太长时,它会自动为我滚动。

我真的需要滚动,因为它是一个扫描对象列表,它会变得比屏幕上的空间允许的更大。

但是当我滚动它时,它会闪烁很多。我希望它能给我一些流畅的滚动。

我已经看过几个“Compact Framework”双缓冲示例,但它们都是双缓冲绘制方法(即graphics.DrawString)。我的自定义控件本身不做任何绘画。它只是在面板上放置普通的网格和标签,然后让面板绘制它们。

有没有办法双缓冲普通控件(同样不是自定义绘画)?

【问题讨论】:

  • 如果你找不到这个问题的答案,也许有一种方法可以延迟更新,直到控件完成移动/滚动,如果这有帮助的话。

标签: c# windows-mobile compact-framework doublebuffered


【解决方案1】:

Compact Framework 控件没有 DoubleBuffered 属性或底层双缓冲机制。也没有办法添加。

获得双缓冲的唯一方法是覆盖控件的绘制并自己进行。

【讨论】:

  • 感谢您的指点。我试图在他们的 OnPaint 方法中对面板和面板上的控件进行 BitBlt,但它并没有改善滚动的扭曲(它没有那么多闪烁。它确实是在绘制控件的局部并且绘制太慢和太厚实)。自从我的 C++ 时代(多年前)以来,我不必对 BitBlt 做太多事情。所以我可能做错了。如果您有任何可以帮助双缓冲的示例代码,那就太好了。
猜你喜欢
  • 1970-01-01
  • 2010-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-23
  • 2011-01-02
相关资源
最近更新 更多