ImageList.Draw () немного необычен, он использует встроенную поддержку, которую имеет собственный код списка изображений в Windows для рендеринга изображения в списке.Это оптимизация, позволяющая избежать затрат на преобразование внутреннего изображения, сохраненного в собственном списке изображений, обратно в управляемый объект Image.
Однако одним побочным эффектом является то, что этот рисунок происходит независимо от любого изпреобразования, которые были применены к графическому объекту.Изображение 16x16 в списке будет отображаться на бумаге размером 16x16 пикселей.Что на самом деле немного сложно найти, принтеры имеют очень высокое разрешение (обычно 600 точек на дюйм), это изображение превращается в десятичную точку.
Списки изображений действительно должны были быть источником изображений дляЭлементы управления TreeView и ListView не являются хорошим объектом коллекции общего назначения для изображений.Как List<Image>
.Ваш обходной путь хорош, свойство Image преобразует внутреннее растровое изображение обратно в управляемое изображение, Graphics.DrawImage () затем масштабирует его соответствующим образом, чтобы получить размер на бумаге, близкий к размеру на экране.Однако с зернистостью вы получаете от создания изображения в 6 раз больше.Обратите внимание, что вы должны Dispose () этот объект.