我已经问了有关适当缩放的问题,而右侧和底部没有边缘。链接
我已经检查过,位图的大小为32 x 32像素。当我尝试在图片框上使用drawimage(Image,int,int)绘制它时,它的绘制比位图大一点,例如36 x 36或40 x 40 x 36或40 x 40。但是,当我添加宽度和高度来吸引图32乘32。这应该发生。
编辑:
internal void draw(Graphics g, int x, int y)
{
int s = Game.scale;
Bitmap resized = (s > 1) ? ResizeImage(image, width*s, height*s) : image;
g.DrawImage(resized, x * width * s, y * height * s);
}
private static Bitmap ResizeImage(Image image, int width, int height)
{
var destRect = new Rectangle(0, 0, width, height);
var destImage = new Bitmap(width, height);
destImage.SetResolution(image.HorizontalResolution, image.VerticalResolution);
using (var graphics = Graphics.FromImage(destImage))
{
graphics.CompositingMode = CompositingMode.SourceCopy;
graphics.CompositingQuality = CompositingQuality.HighQuality;
graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
graphics.SmoothingMode = SmoothingMode.HighQuality;
graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;
using (var wrapMode = new ImageAttributes())
{
wrapMode.SetWrapMode(WrapMode.TileFlipXY);
graphics.DrawImage(image, destRect, 0, 0, image.Width, image.Height, GraphicsUnit.Pixel, wrapMode);
}
}
return destImage;
}
功能,而不是错误。如果未指定目标大小,则drawimage()会注意图像的物理大小。创建时的大小,英寸。您可以在调试器中看到的东西,查看位图的水平分辨率和垂直分辨率属性。
诊断可能是每英寸120个点,程序员通常以今天的125%运行其视频适配器。因此绘制的图像变为1.25 * 32 = 40像素。
请记住,这种恢复往往很重要,这样的图像很容易变成高档4K监视器上的灰尘。他们今天变得非常负担得起。您是否想要这个取决于其余的UI重新升级。在Winforms应用中查看有关DPIAWARESS的这篇文章。