在可滚动视图中渲染2D基元

时间:2009-08-22 13:17:38

标签: c# windows graphics scroll

使用C#在窗口的可滚动视图中渲染大量2D图形元素(线条,文本,形状等)的最佳方法是什么?

2 个答案:

答案 0 :(得分:3)

您可以将一个PictureBox(无论需要什么样的总大小)放到一个AutoScroll设置为True的面板上,然后使用Graphics对象将您需要的所有内容一次性绘制到PictureBox上。

但是,如果绘图表面的整体大小非常大,这种方法将不实用(因为它意味着拥有一个巨大的PictureBox和相应的巨大Bitmap,这可能会占用大量内存)。如果是这种情况,您最好创建自己的可滚动用户控件(水平和垂直),并在控件的Paint事件中仅渲染整个表面的可见部分。

第一种方法编写起来会更容易,更快,但可能会占用太多内存。第二种方法需要您做更多的工作,但会最大限度地减少内存消耗。

答案 1 :(得分:0)

默认情况下,有一个scrollviewcontainer控件但不在工具箱上。我会对图片框进行上述处理并将其嵌入此控件中。此外,您可以使用SetStyle启用双缓冲以防止闪烁。另一个选择是构建一个类来处理双缓冲(绘制到位图对象并使用CreateGraphics推出结果)。那里有一些很好的例子。