我在C#中的控件上绘制图像(比方说200x200)取决于它们在屏幕外绘制的数量(可能超过100),因为它们一个堆叠在另一个之上。制作动态滚动的最佳方法是什么,以便我可以滚动到屏幕外的滚动。
我正在考虑使用Panel并在那里绘制它们,然后将Panel放在控件上。但是面板是透明的,面板所在的控件正在改变其图像(它可以随着拖动而移动的地图),面板在绘制时会滞后并产生难看的抖动效果。
那么有什么好的解决方案我不需要自己为这样的解决方案实现卷轴的整个逻辑吗?
答案 0 :(得分:2)
PictureBox
是双缓冲的,可以处理闪烁。
对于您的情况,不要将绘制到控件上,无论如何,而是将绘制到 PictureBox
的{{1}}。
将Image
置于自动滚动面板中,并将其设置为您需要的大小。没有抖动,平滑滚动..
这是一个例子。它随机地将大约200个小图像绘制到PictureBox
的图像中。我创建了一个大尺寸的图像,然后将PB放入PictureBox
:
Panel
你可以很容易地将它改编成你自己的项目,我敢肯定..