绘图中的位图的大小



我已经问了有关适当缩放的问题,而右侧和底部没有边缘。链接

我已经检查过,位图的大小为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的这篇文章。

相关内容

  • 没有找到相关文章

最新更新