通过避免自动缩放来提高性能

如果仅将图像的左上角传递给 DrawImage 方法,Windows GDI+ 可能会缩放映像,这会降低性能。

以下对 DrawImage 方法的调用指定 (50, 30) 的左上角,但不指定目标矩形:

graphics.DrawImage(&image, 50, 30);  // upper-left corner at (50, 30)

尽管这是 DrawImage 方法的最简单版本,但所需参数的数量并不一定是最高效的。 如果当前显示设备上的点数与创建图像的设备上的每英寸点数不同,GDI+ 会缩放图像,以便其当前显示设备上的物理大小尽可能接近其创建设备的物理大小。

如果要阻止此类缩放,请将目标矩形的宽度和高度传递给 DrawImage 方法。 以下示例绘制同一图像两次。 在第一种情况下,未指定目标矩形的宽度和高度,并且图像会自动缩放。 第二种情况下,将指定目标矩形的宽度和高度(以像素为单位),其宽度和高度与原始图像的宽度和高度相同。

Image image(L"Texture.jpg");
graphics.DrawImage(&image, 10, 10);
graphics.DrawImage(&image, 120, 10, image.GetWidth(), image.GetHeight());

下图显示了两次呈现的图像。

窗口的截图,该窗口中包含的同一图像有两个不同缩放比例的版本