Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > pictureBox Icon, потеря качества иконки


Автор: Rockie 9.1.2008, 19:15
Здравствуйте!

Юзаю VS 2005, C# .NET 2.0.

На форме располагаю pictureBox. В него загружаю стандартную иконку INFO.ico из папки C:\Program Files\Microsoft Visual Studio 8\Common7\VS2005ImageLibrary\VS2005ImageLibrary\icons\WinXP (по дефолту в этой папке сначала находится архив с иконками). Выставляю свойство Size pictureBox-a в "StretchImage". Как видите на рисунке, иконка в дизайнере выглядит вполне прилично. Проблема в том, что по  ctrl+f5 иконка заметно теряет в качестве(см. скриншот).
Как исправить, хелп! =)

http://img165.imageshack.us/my.php?image=uglyiconfn5.jpg

p.s.: возможно у кого-то есть такая же иконка но более хорошего качества (эта 16*16 пикселей)?

Автор: informatik 9.1.2008, 21:53
Судя по скриншоту можно быть на 100% уверенным что твоя картинка, ну никак не 16х16 пикс, а гораздо больше... 
(Я имею ввиду скриншот до запуска программы...).
Странная у тебя проблема...

А вообще, если уж значек 16х16 то и отображать его надо также, а не растягивать на такой размер... это не векторная графика

Автор: Rockie 9.1.2008, 22:18
Такая иконка используется в стандартном MessageBox. Ее можно видеть, если написать нечто вроде
Код

MessageBox.Show(" bla", "bla", MessageBoxButtons.OK, MessageBoxIcon.Information);

У меня пользовательский MessageBox, но я хочу сохранить один стиль со стандартными и вывести эту иконку. "INFO.ICO" я нашел, но не могу так же красиво отобразить. Прилагаю также http://slil.ru/25335830, ~24Kb.




Автор: tol05 9.1.2008, 22:44
я так и не нашел в сети ответа почему так происходит. Мое предположение такое: ты ведь добавляешь этот image как ресурс? Студия определяет его как иконку и режет качество под иконку. Можно просто добавить иконку эту в ресурсы и посмотреть в дизайнере. Уже будет совсем не то, что нужно... 
предлагаю поступить так
Код

Image image = Bitmap.FromFile(@"C:\Program Files\Microsoft Visual Studio 8\Common7\VS2005ImageLibrary\VS2005ImageLibrary\icons\WinXP\info.ico");
pictureBox1.Image = new Bitmap(image, pictureBox1.Width, pictureBox1.Height);

Автор: informatik 9.1.2008, 22:52
В студии эта иконка имеет размер примерно 34х34 пикселя... в два раза больше чем твоя..

Ну если ты хочешь такую же иконку, то нажимаешь PrintScreen, редактируешь и сохраняешь картинку в формате с прозрачным фоном(Gif, Ico, Png и т.д.). 

И усе...

Либо (я бы очень сам хотел узнать как это сделать) узнать как получить доступ к вот этим самым файлам студии, для отображения в своих формах - вот это было бы клево...

Вот, в формате PNG:
user posted image

Автор: Rockie 9.1.2008, 23:28
Вопрос решил, подсказали такое решение. В этом случае отображается нормально, используется тот самый файл студии smile:
Код

Icon icon = SystemIcons.Error;
Bitmap bmpIcon = new Bitmap(icon.Width, icon.Height);
Graphics gr = Graphics.FromImage(bmpIcon);
gr.DrawIcon(icon, 0, 0);
pictureBoxIcon.Image = bmpIcon;

tol05, informatik, спасибо что помогали в решении!


Автор: informatik 9.1.2008, 23:36
Вот именно это я тоже хотел знать.  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)