我正在使用 WinForms 创建一个 512x512 像素的图像,分辨率为 96dpi。初始化后,我OnPaint
使用Graphics.DrawImage
. 当我运行程序时,我得到的是如下所示的图像:本质上是一个 1024x1024 的图像,其中包含一些与我想要显示的内容模糊相似的 jung,除了它由 2x2 像素块组成,所有块都具有相同的相同颜色。这很奇怪。
有人可以帮我弄清楚发生了什么吗?这只发生在高 DPI 显示器上,该程序在普通显示器上运行良好。
更新 1:我明确地将进程设置为不感知 DPISetProcessDpiAwareness(_Process_DPI_Awareness.Process_DPI_Unaware);
并明确调用DrawImage
矩形,即
e.Graphics.DrawImage(bmp,
new Rectangle(0, 0, 512, 512),
new Rectangle(0, 0, 512, 512), GraphicsUnit.Pixel);
它没有帮助。
编辑 2:打开 DPI 意识后,我现在得到相同的垃圾,但大小合适:
编辑 3:终于明白了,工件是我在 CUDA 端错误渲染的结果。高 DPI 的废话只是分散注意力。