【发布时间】:2010-07-21 00:29:07
【问题描述】:
我正在使用 C# GDI+ 创建一个自定义控件。
快速解释...该控件将在屏幕上显示 500 像素,但可能包含 500000 像素的信息。因此,虽然我一次只显示 500 像素,但我显然需要在水平面(左右)滚动。棘手的部分是每个 500px 的位图块需要一段时间(在 100ms - 1000ms 之间)来渲染。
所以我的计划是在内存中维护一个 1500px 的位图。即 500px 可见部分和 500px 可见区域的任一侧,并在用户滚动时异步绘制屏幕外部分。
我想要一些反馈、建议、批评或代码示例来帮助我实现这一目标。这似乎相当简单,但经过几次初步测试尝试后,它被证明比想象的要困难。
谢谢。
【问题讨论】:
-
您遇到了什么样的问题?闪烁?您是否已经渲染到缓冲区,然后在您的绘制事件中从缓冲区复制到您的控件?
-
是的,我目前能够构建一个 1500 像素的位图并滚动它。我遇到的问题确实是当用户滚动到缓冲区边缘时更新位图的最佳方法。
-
我在想一种方法是拥有三个 500px 位图的数组,这些位图可以根据需要滚动和更新。
-
另一种方法可能是拥有一个 1500 像素的大位图,当用户滚动到边缘时,我必须将当前可见区域位图的另一端,重新绘制无效区域,然后开始再次滚动。我似乎无法在网上找到任何此类事情的示例。
标签: c# gdi+ drawing scroll buffer