Используйте другое изображение в зависимости от настроек dpi на компьютере

Я использовал изображения 16x16 px в своем приложении, так что я получаю четкие края и без автоматического изменения размера при стандартной настройке dpi 96.

Когда пользователь изменяет настройку dpi, изображения увеличиваются, а поскольку исходные файлы имеют размер только 16x16, они выглядят естественно плохо. Есть ли способ, которым я могу предоставить несколько изображений для определенного источника изображения, и лучший будет выбран автоматически? Например, я предоставляю изображения размером 16x16, 20x20 и 24x24 пикселей, когда размер изображения составляет 16x16 [wpf единиц], поэтому у меня есть одно идеальное соответствие для 96, 120 и 144 точек на дюйм?

1 ответ

Решение

Что я могу думать лучше всего, это установить image source dynamically во время выполнения на основе настроек DPI системы. В коде позади вы можете установить динамически, как -

ImageViewer1.Source = new BitmapImage(new Uri(@"\\myserver\\folder1\\sample.png"));

Прослушайте это событие в вашем классе, чтобы получать уведомления об изменениях настроек dpi компьютера - Microsoft.Win32.SystemEvents.DisplaySettingsChanged, Подробности об этом можно найти здесь - Системные события

Кроме того, вы можете получить значение dpi системы, используя следующий код -

float dpiX, dpiY;
Graphics graphics = this.CreateGraphics();
dpiX = graphics.DpiX;
dpiY = graphics.DpiY;

Переместите эту логику в свойство и на основе значения свойства динамически задайте источник изображения.

Другие вопросы по тегам