Я использую WinForms для создания изображения размером 512x512 пикселей с разрешением 96 точек на дюйм. После инициализации я использую OnPaint
для рисования этого изображения с помощью Graphics.DrawImage
. Когда я запускаю программу, я получаю изображение, показанное ниже: по сути, изображение размером 1024x1024, которое содержит некоторый jung, отдаленно напоминающий то, что я хочу показать, за исключением того, что он состоит из блоков 2x2 пикселя, имеющих одинаковые цвета. Что странно.
Может ли кто-нибудь помочь мне понять, что происходит? Это происходит только на дисплеях с высоким DPI, на обычных программа работает нормально.
Обновление 1: я явно устанавливаю процесс без учета DPI с помощью SetProcessDpiAwareness(_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. Вся эта ерунда с высоким разрешением была просто отвлечением.