使用缓存位图提高性能
图像 和 位图 对象以与设备无关的格式存储图像。 CachedBitmap 对象以当前显示设备的格式存储图像。 呈现存储在 CachedBitmap 对象中的图像的速度很快,因为无需花费处理时间将图像转换为显示设备所需的格式。
以下示例从文件Texture.jpg创建 Bitmap 对象和 CachedBitmap 对象。 位图和 CachedBitmap 各绘制 30,000 次。 如果运行代码,将看到 CachedBitmap 图像的绘制速度大大快于 位图 图像。
Bitmap bitmap(L"Texture.jpg");
UINT width = bitmap.GetWidth();
UINT height = bitmap.GetHeight();
CachedBitmap cBitmap(&bitmap, &graphics);
int j, k;
for(j = 0; j < 300; j += 10)
for(k = 0; k < 1000; ++k)
graphics.DrawImage(&bitmap, j, j / 2, width, height);
for(j = 0; j < 300; j += 10)
for(k = 0; k < 1000; ++k)
graphics.DrawCachedBitmap(&cBitmap, j, 150 + j / 2 );
注意
CachedBitmap 对象与构造 CachedBitmap 对象时显示设备的格式匹配。 如果程序的用户更改显示设置,代码应构造一个新的 CachedBitmap 对象。 如果向其传递在更改显示格式之前创建的 CachedBitmap 对象,则 DrawImage 方法将失败。