Если вы считаете следующее изображение, это довольно простой значок размером 32x32. Вокруг иконки есть прозрачный прямоугольник, хотя во время тестирования я заполнил четыре угла сплошным цветом.

Теперь рассмотрим этот код, который просто рисует изображение, но в большем масштабе:
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
e.Graphics.InterpolationMode = InterpolationMode.NearestNeighbor;
e.Graphics.DrawImage(Properties.Resources.icon_32a, new RectangleF(0, 0, 512, 512), new RectangleF(0, 0, 32, 32), GraphicsUnit.Pixel);
}
Обратите внимание, что я рисую полный образ, и я никоим образом не пытаюсь обрезать его, просто увеличьте его.
Наконец, это результат, который дает мне тест:

Обратите внимание на проблему? Половина пикселей в верхней и левой колонках исчезла. Если я затем попытаюсь наложить сетку поверх этого, это выглядит довольно ужасно, так как сетка правильно выровнена, но изображение отсутствует. Даже удваивая размер до 64, 64 вводит этот первый столбец строки/столбца.
Заметьте, я также попытался смещать прямоугольник назначения на всякий случай, когда он рисовал до 0,0, но это было не так.
Я также пробовал использовать разные режимы интерполяции, но, насколько я мог сказать, из-за головной боли, вызывающей размытие, пиксели все еще были обрезаны, поэтому я не верю, что это связано с режимом интерполяции.
Я также попытался использовать разные графические режимы, но, помимо того, что это не помогло, мне все равно нужно придерживаться пикселей.
Я попытался снова с новой копией изображения на 96dpi из любопытства и получил тот же эффект, поэтому я не думаю, что это разрешение исходных изображений.
Сжатие на соломинках и использование Rectangle
вместо RectangleF
также не повлияло.
Может ли кто-нибудь предложить какие-либо подсказки относительно того, почему этот кажущийся урожай происходит?
Благодаря;