Отображение одного и того же значка в 2 разных размерах на C # - PullRequest
0 голосов
/ 24 апреля 2010

Моя цель - отображать один и тот же значок дважды, но каждый раз в разном размере. Я попробовал следующее:

FileStream fs = new FileStream("name_of_the_icon_file.ico", FileMode.Open);
Icon ico = new Icon(fs, 32, 32);     //create an in-memory instance of the icon, size 32x32
Icon ico2 = new Icon(fs, 16, 16);   //create an in-memory instance of the icon, size 16x16  
...
Graphics.DrawIcon(ico, /*some point*/);
Graphics.DrawIcon(ico2, /*some other point*/);

В последней строке выдается ArgumentException: значение не попадает в ожидаемый диапазон. Может кто-нибудь объяснить мне, что не так и как это сделать правильно?

1 Ответ

2 голосов
/ 24 апреля 2010

Файл значка содержит одно или несколько изображений разных размеров.

Используемый вами конструктор Icon пытается найти точное совпадение с размером, который вы указали в файле icon. Если файл значка не содержит изображения 16x16, он выдаст исключение, так как не может соответствовать этому точному размеру.

Вместо этого просто загрузите значок (без указания размера, чтобы загружались все размеры), а затем используйте переопределение Graphics.DrawIcon (значок, прямоугольник), чтобы нарисовать его в размере, в который вы хотите растянуть его. Он будет отображаться с использованием наилучшего размера, определенного в значке (и затем масштабировать его при необходимости).

Для достижения наилучшего качества отредактируйте файл значков (я предлагаю использовать IcoFX ), чтобы предоставить конкретные изображения нужного размера (32x32 и 16x16), чтобы значки не масштабировались при их рисовании. 1009 *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...