@gmikhail94

Как изменить алгоритм масштабирования к иконке в окне (WPF)?

Если большое изображение отображать в размере меньше исходного, то начинают проявляться артефакты "пикселизации":
8a61985069cb4d0097540bf0d07f4a68.png
Но это можно решить указав атрибуте объекта, в XAML, алгоритм масштабирования с более высоким качеством:
<Image Height="50" Width="50" 
             Source="Resources/logo.png" 
             RenderOptions.BitmapScalingMode="HighQuality" />

Тогда изображение выглядит нормально
81986348f9ab454a9d6b676d88321d0a.pngВопрос. Как изменить алгоритм масштабирования который применяется к иконке в окне?
Иконка задается через XAML (последняя строка):
<Window x:Class="MyApp.AboutWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:res="clr-namespace:MyApp.Properties"
        Title="{x:Static res:Resources.AboutWindowTitle}" 
        Height="450" Width="300" 
        ResizeMode="NoResize" 
        WindowStartupLocation="CenterOwner"
        Icon="Resources/info.png">
...

А иконка в заголовке окна выглядит вот так
946bb767b66042aba985a8e55a21b078.png
Атрибут RenderOptions.BitmapScalingMode="HighQuality" применяемый к окну ничего не дает.
  • Вопрос задан
  • 508 просмотров
Решения вопроса 1
@i_light
Backend, XAML, crossplatform
Вообще, любое масштабирование приводит к потере качества. Никакое сглаживание ситуацию не спасает.

Что касается иконки в заголовке окна, то она рендерится не силами WPF, насколько мне известно, а самим dwm, поэтому разметкой ничего не решить. Разве что делать кастомный заголовок.

Лучше всего будет нарисовать иконку размер в размер. Или несколько иконок под разные dpi. По крайней мере, мы в своих проектах поступаем с картинками именно так.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы