我有一个winforms应用程序。我有一个很多图标的用户控件。用户可以在窗体上多次加载此控件(以选项卡式布局)。现在我每次创建控件时都会加载图标(在应用程序中最多可以加载50次)。有什么办法在应用程序中缓存这些图标。如果我这样做,会减少我使用的gdi手柄的数量,因为这成为一个问题。GDI使用图标进行处理。 l
0
A
回答
2
您可以为每个图标创建一个单例类。它创建句柄的第一个参考。随后的调用使用现有的句柄。
不知道更多关于您的用户控件,我的下一个建议可能只是非常普遍。但是你可以有一个位图图层,你可以在其上绘制所有的图标。您的用户控件的其余元素将存在于此位图的上方和周围。
不幸的是,这个想法在性能方面可能存在问题。要求您重构您准备用于安排图标的代码。最后,从控制结构框架理想地工作的角度来看,它是非制度性的。
我们碰到了一个资源问题,它带有我们CAM软件附带的参数形状的参赛表单。太多的文本条目导致了各种形式的奇怪和泄漏。所以我们创建了带有边框的标签,看起来像文本条目,并且有一个文本条目(还有一个组合框条目)。当用户选中,输入或单击移动到新条目的单个文本条目并为前一条目设置标签时。
这完全是一个非直观的设置,而不是通常的代码编写方式,但它是处理资源问题的唯一方法。
根据我的经验,当您必须处理数十个或数百个条目并且您必须使用不同的设计来解决问题时,GUI框架似乎有问题。
0
如果问题是“图标”的数量(不确定你在这里的意思),你可以使用图像列表。例如,Listview控件可以引用图像列表中的图标,而不是保留每个项目的完整副本(不确定这是否适用于您的案例)。
相关问题
- 1. 使用SailsJS进行图像处理
- 2. 使用Hadoop MapReduce进行图像处理
- 3. 使用Mathematica进行图像处理
- 4. 使用Matlab GUI进行并行处理
- 5. GDI + Region,Matrix和GraphicsPath处理
- 6. 如何处理GDI资源
- 7. 使用HTML5 Canvas进行图像处理和纹理映射?
- 8. 散点图不使用管理器进行多点处理
- 9. 使用新的图像gdi +
- 10. 使用Direct2D进行实时图像处理的大型图像
- 11. 使用频域进行图像处理 - 复制图像
- 12. 在OpenGL图形上使用OpenCV进行图像处理
- 13. 使用MATLAB进行并行图像处理
- 14. 使用GDI +位图
- 15. 使用python进行数据处理
- 16. 使用Informatica进行混淆处理
- 17. 使用twitter API进行后台处理
- 18. 使用Kinect进行线程处理
- 19. 使用对象进行多处理?
- 20. 使用opencv进行视频处理
- 21. 使用pyplot进行数据处理
- 22. 使用DB express进行异常处理
- 23. 使用TestNG进行异常处理
- 24. 使用模板进行事件处理
- 25. 使用Spark Streaming进行FIFO处理?
- 26. 使用python进行基本多处理
- 27. 使用Recess进行会话处理!
- 28. 使用self.methods进行多处理
- 29. 使用ffmpeg进行Android音频处理?
- 30. 使用VSTO进行Excel数据处理?