想象一个带有可能很宽的水平条的条形图。我在表单上有一个面板,我想在其中显示这些栏并滚动和缩放它们。可以调整窗体以及面板的大小。条形图是从数据库动态创建的。每次用户放大或缩小时,都必须重新创建所有条形以在面板上调整它们的大小。
我使用标签控件来创建这些条,但问题也适用于所有其他控件:如果我放大得足够远,我的条最终将超过控件大小的神奇 16 位边框(> 65536 像素)。这使得不可能在开始时简单地在面板上创建所有控件并让面板处理滚动。
我的想法:根据滚动条的当前位置和缩放级别,清除所有条形控件的面板并仅创建在当前视图窗口中可见的那些。远离可见视图的条将在面板外被剪短,因此它们的最大尺寸受面板尺寸的限制。
我的问题:
- 这个清除/创建过程最好在哪些小组活动中进行?可能有数千个控件,所以应该尽可能少。
- 有没有更好的方法来处理这个?也许我从一开始就搞错了。
这个问题不仅出现在巨大的控件中,而且在面板上较小的控件相距很远(> 65536像素)时也会出现,所以我认为一个好的解决方案可能对许多项目都有帮助。