奇怪的C#GUI+;问题:在120 dpi下绘图时图像重新调整大小

奇怪的C#GUI+;问题:在120 dpi下绘图时图像重新调整大小,c#,gdi+,C#,Gdi+,在将dpi设置为120时,我在C#中遇到了一个奇怪的图像绘制问题。当我们提供以下代码时,我们在运行时创建的图像在另一个图像对象中重新调整了大小: if ((dstimg == null) || srcimg == null)) return; Graphics dstg = Graphics.FromImage(dstimg); dstg.PageUnit = GraphicsUnit.Pixel; dstg.SmoothingMo

在将dpi设置为120时,我在C#中遇到了一个奇怪的图像绘制问题。当我们提供以下代码时,我们在运行时创建的图像在另一个图像对象中重新调整了大小:

        if ((dstimg == null) || srcimg == null)) return;
        Graphics dstg = Graphics.FromImage(dstimg);
        dstg.PageUnit = GraphicsUnit.Pixel;
        dstg.SmoothingMode = SmoothingMode.None;// = dst.smooth;
        dstg.CompositingQuality = CompositingQuality.HighSpeed;
        dstg.InterpolationMode = InterpolationMode.NearestNeighbor;
        dstg.DrawImage(srcimg, x, y);
        dstg.Dispose();
srcimg是:

dstimg是:

如果Windows Aero功能打开,则不会显示此问题,因为Aero中的dpi始终为96px。但一旦我们关闭Aero,问题就会显现出来


我不知道出了什么问题。源图像对象和目标图像对象的DPI均为96 DPI。有人能给我一个关于可能发生的事情的提示吗?

似乎GDI+是。我建议使用另一个库。@HansPassant两个图像对象都是96px,它仍然在内存中,而不是在监视器上。我们用几乎相同的代码多次复制了这个图像,只有在这个阶段,问题才会显现出来。我相信在目的地图像中可能存在设置问题,但我们始终无法找到它。