compact-framework - 在 CF.NET 中创建大位图时出现 OutOfMemoryException

标签 compact-framework gdi+ bitmap

我的紧凑型框架应用程序通过将所有项目渲染到一个大的位图表面,然后将该位图复制到屏幕上的偏移位置来创建一个平滑滚动列表,以便只显示适当的项目。旧版本只渲染当时应该出现在屏幕上的项目,但这种方法对于平滑滚动界面来说太慢了。

最初创建大位图时,它偶尔会生成 OutOfMemoryException。如果用户对设备执行软重置并再次运行应用程序,则可以毫无问题地执行创建。

看起来这个位图不是在程序内存中生成的,因为应用程序使用的程序内存量与新的平滑滚动方法之前使用的程序内存量大致相同。

有什么方法可以防止这个异常吗?有什么方法可以在抛出异常之前释放我需要的内存(无论它在哪里)?

最佳答案

我建议回到只渲染部分数据的旧机制,因为完全渲染的数据的大小显然是一个问题。为了帮助防止渲染问题,我可能会在当前 View 的上方和下方预渲染几行,以便它们可以在有限的影响下“滚动”。

关于compact-framework - 在 CF.NET 中创建大位图时出现 OutOfMemoryException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/297697/

相关文章:

windows - 组合框下拉窗口可以显示在组合框窗口之外,如何?

java - 内存与性能,哪个最好?

c# - 与 wcf REST 通信的 JSON.NET 兼容序列化

c# - Compact Framework 3.5 应用程序在 CE7/Motorola MC32N0 上间歇性崩溃

c# - 类 CSS3 框阴影实现/算法

c++ - Direct2D 加载和绘制位图

android - 位图和 BufferedImages 之间的区别

c# - 如何使用 Windows Mobile 6.1 - Compact Framework 捕获 PDA 的所有硬件 key ?

.net - 如何在 .Net 中使用 PKCS #1 v1.5 编码数据

c# - 将带有颜色名称的字符串转换为颜色“id”