Используйте другое изображение в зависимости от настроек 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;
Переместите эту логику в свойство и на основе значения свойства динамически задайте источник изображения.