![]() |
1
5
放置屏幕截图的最明显的地方是实现一个“撤消”命令。简单的内存占用方法是在每次操作之前对屏幕进行快照。如果用户点击“撤消”,您可以恢复旧屏幕。
为了节省内存空间,您只需将两个屏幕进行异或运算,就可以节省两个屏幕之间的差异。它本身并不节省任何空间,但它将所有不变的像素设置为0。为了节省空间,您需要应用某种压缩。考虑到您通常可以期望相当大的区域都为零,运行长度编码可能是快速有效的。对于运行长度编码,通常将相同字节的字符串转换为两个字节,第一个字节保持运行长度,第二个字节保持值。例如,一行中的75个零将被编码为
如果您想更进一步,而不是保存XORED位图,您可以使用一个元文件进行研究。元文件记录在Windows GDI调用级别所采取的操作,因此(例如)如果您在10、100处绘制一个红色的100x200矩形,它将基本上记录——即,它将保存一个标识符,说明要执行的GDI函数以及要提供给该函数的参数,而不是2万像素。在典型情况下,每个执行的“命令”的平均值可能约为15-20字节。同时,它确实(通常)涉及到更多的计算——例如,如果绘制一个圆,重新运行一个元文件需要重新整理该圆,而不仅仅是存储它生成的位。 |
![]() |
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
![]() |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
![]() |
rainer · 后台插入程序的初始化 1 年前 |
![]() |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
|
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
|
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |