Как указать алгоритм масштабирования изображения, используемый в WPF Image? - PullRequest
4 голосов
/ 26 мая 2010

Есть ли способ указать, как изображение масштабируется в элементе Image с LayoutTransform, установленным в ScaleTransform с целочисленными значениями для ScaleX и ScaleY?

Я хочу, чтобы масштабированное изображение было четким (т. Е. С использованием масштабирования «ближайший сосед»), без размытия. (Представьте, как бы вы хотели, чтобы программа редактирования растровых изображений работала при увеличении масштаба).

Я заметил защищенное свойство VisualBitmapScalingMode в Image, поэтому создал подкласс Image, который устанавливает это свойство в BitmapScalingMode.NearestNeighbor. Однако это никак не отразилось.

Ответы [ 2 ]

8 голосов
/ 28 июля 2014

Вы можете установить свойство RenderOptions.BitmapScalingMode в XAML для элемента управления Image. Нет необходимости наследовать класс Image.

8 голосов
/ 26 мая 2010

Я исправил это, переопределив OnRender в моем подклассе Image и установив VisualBitmapScalingMode перед рисованием изображения:

class MyImage : System.Windows.Controls.Image
  {
    protected override void OnRender(DrawingContext dc)
    {
      this.VisualBitmapScalingMode = System.Windows.Media.BitmapScalingMode.NearestNeighbor;
      base.OnRender(dc);
    }
  }
...