not well known,如果您绘制图像,例如:
graphics.DrawImage(image, top, left);
图像将被缩放。这是因为DrawImage
查看图像的dpi设置(例如来自photoshop的72dpi),并缩放图像以匹配目标显示(通常为96dpi)。
如果您想要绘制没有任何缩放的图像,您必须明确给出DrawImage
图像的大小:
graphics.DrawImage(img, top, left, img.Width, img.Height);
我从GDI +的多年编程中了解到这一点。围绕GDI +的.NET System.Drawing
包装器中存在相同的事实 - 如果要绘制未缩放的图像,则必须强制它缩放到原始大小。
这就是为什么我在.NET中找到DrawImageUnscaled
方法给我留下了深刻的印象:
graphics.DrawImageUnscaled(img, top, left);
除了图像仍然缩放;使其与:
相同graphics.DrawImage(img, top, left);
如果您想要绘制未缩放的图像,则必须继续调用:
graphics.DrawImage(img, top, left, img.Width, img.Height);
这让我想到了一个问题:DrawImageUnscaled
如果不绘制未缩放的图像会是什么?
Graphics.DrawImageUnscaled Method (Image, Int32, Int32)
使用原始物理大小在坐标对指定的位置绘制指定的图像。
Graphics.DrawImage Method (Image, Int32, Int32)
使用原始物理尺寸在坐标对指定的位置绘制指定的图像。
Graphics.DrawImage Method (Image, Int32, Int32, Int32, Int32)
在指定位置以指定大小绘制指定的图像。
答案 0 :(得分:7)
Graphics.DrawImageUnscaled Method (Image, Int32, Int32)
与[{1}}
e.g。
DrawImage (Image, Int32, Int32)
然而,采用高度,宽度或矩形的方法是不同的。这些方法要么忽略高度和宽度要么使用矩形只使用顶部和左边。
我的猜测是public void DrawImageUnscaled(Image image, int x, int y)
{
this.DrawImage(image, x, y);
}
出于奇偶校验的原因,并且由于源设备和目标设备的dpi差异而与缩放无关。