2008-11-28 51 views
0

我有一个winforms应用程序。我有一个很多图标的用户控件。用户可以在窗体上多次加载此控件(以选项卡式布局)。现在我每次创建控件时都会加载图标(在应用程序中最多可以加载50次)。有什么办法在应用程序中缓存这些图标。如果我这样做,会减少我使用的gdi手柄的数量,因为这成为一个问题。GDI使用图标进行处理。 l

回答

2

您可以为每个图标创建一个单例类。它创建句柄的第一个参考。随后的调用使用现有的句柄。

不知道更多关于您的用户控件,我的下一个建议可能只是非常普遍。但是你可以有一个位图图层,你可以在其上绘制所有的图标。您的用户控件的其余元素将存在于此位图的上方和周围。

不幸的是,这个想法在性能方面可能存在问题。要求您重构您准备用于安排图标的代码。最后,从控制结构框架理想地工作的角度来看,它是非制度性的。

我们碰到了一个资源问题,它带有我们CAM软件附带的参数形状的参赛表单。太多的文本条目导致了各种形式的奇怪和泄漏。所以我们创建了带有边框的标签,看起来像文本条目,并且有一个文本条目(还有一个组合框条目)。当用户选中,输入或单击移动到新条目的单个文本条目并为前一条目设置标签时。

这完全是一个非直观的设置,而不是通常的代码编写方式,但它是处理资源问题的唯一方法。

根据我的经验,当您必须处理数十个或数百个条目并且您必须使用不同的设计来解决问题时,GUI框架似乎有问题。

0

如果问题是“图标”的数量(不确定你在这里的意思),你可以使用图像列表。例如,Listview控件可以引用图像列表中的图标,而不是保留每个项目的完整副本(不确定这是否适用于您的案例)。