Есть иконка (файл .ico), с мульти-размерностью. То есть она имеет N "кадров" внутри, и каждый "кадр" под определенное разрешение. Как мне добавить его в проект, чтобы он сам выбирал нужный размер. Читал что нужно просто в свойствах проекта, как обычно, добавить иконку, при этом когда запускаешь проект, дебаг или релиз, в шапке она не выбирает нужный "кадр"
Если вы устанавливаете значек приложения в свойствах проекта, то Windows, несомненно, выбирает размер значка автоматически в зависимости от разрешения (DPI). Я протестировал на Win7 и результаты такие:
В панели задач: 32x32
В заголовке окна: 16x16
В экране ALT-TAB: 32x32
В панели задач: 32x32
В заголовке окна: 24x24
В экране ALT-TAB: 32x32
(Обратите внимание, что статьи в MSDN на тему значков могут давать устаревшую информацию, так как никто похоже не позаботился обновить их со времен ХР.)
Вы также можете задать значок окна явно с помощью свойства Icon, выбрав любой размер какой пожелаете. Для этого нужно подключить к проекту ссылку на System.Drawing. В этом случае, в отличие от автоматического выбора, все три значка будут одного размера:
using System;
using System.Collections.Generic;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.IO;
void SetIcon()
{
using (Stream iconStream = new FileStream(@"file.ico", FileMode.Open))
{
using (System.Drawing.Icon icon = new System.Drawing.Icon(iconStream, 64, 64))
{
using (System.Drawing.Bitmap bitmap = icon.ToBitmap())
{
MemoryStream memoryStream = new MemoryStream();
bitmap.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Png);
memoryStream.Seek(0, SeekOrigin.Begin);
PngBitmapDecoder pbd = new PngBitmapDecoder(memoryStream, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);
// Отобразить элемент в окне в натуральную величину (для проверки размера)
myImage1.Source = pbd.Frames[0];
myImage1.Stretch = Stretch.None;
//Задать значек окна
this.Icon = pbd.Frames[0];
}
}
}
}
Сборка персонального компьютера от Artline: умный выбор для современных пользователей