Можно ли изменить качество интерполяции изображения в элементе управления WPF Image?

Управление изображением - помещено в Viewbox. Для автоматического масштабирования при изменении размера окна. Все работает идеально.

Можно ли изменить тип интерполяции в моем случае? Например, выберите Бикубический или Билинейный. Или для автоматического масштабирования такой выбор недоступен?

BitmapImage bmp=new BitmapImage(new Uri("c:/temp/1.jpg"));
ImageSource pic = bmp;
Viewbox vb = new Viewbox();
vb.Stretch = Stretch.UniformToFill;
vb.StretchDirection = StretchDirection.DownOnly;

Image img=new Image();
img.Source = pic;

vb.Child = img;

person Mixer    schedule 09.02.2013    source источник


Ответы (1)


Насколько я знаю, вы не можете указать бикубическую или билинейную интерполяцию для растрового изображения в WPF (по умолчанию используется линейная), но вы можете установить параметр RenderOptions.BitmapScalingMode, чтобы лучше контролировать качество отображения масштабированного растрового изображения. Например:

RenderOptions.BitmapScalingMode="NearestNeighbor" or RenderOptions.BitmapScalingMode="HighQuality"

Дополнительную информацию о каждом из режимов масштабирования можно найти в MSDN http://msdn.microsoft.com/en-us/library/system.windows.media.bitmapscalingmode

Если у вас все еще есть проблемы с размытой графикой, попробуйте установить UseLayoutRounding="True" в корневом элементе. Это отключит субпиксельное позиционирование элементов, которое может привести к неровным линиям в приложениях WPF.

person Jack    schedule 09.02.2013
comment
Я динамически создаю управляющее изображение. в моем случае подходит вот такой метод: RenderOptions.SetBitmapScalingMode(img, BitmapScalingMode.Fant); - person Mixer; 09.02.2013