Изменение размера изображения в Windows 4, но не в версии 3.5 - PullRequest
5 голосов
/ 03 июня 2010

Я использую WPF для конвейера изменения размера изображения, который прекрасно работал в .NET v3.5. Я только что обновил проект до версии 4.0, и теперь все мои измененные изображения имеют большой псевдоним. Ни один из кодов конвейера изображения не изменился.

  1. Значения WPF по умолчанию изменены с v3.5 на v4.0?

  2. Как контролировать сглаживание растровых изображений с измененным размером в WPF?

Я использую BitmapImage, DrawingVisual, DrawingContext, RenderTargetBitmap, BitmapEncoder и BitmapFrame, но я не вижу никаких свойств, связанных с размыванием. У GDI + была куча настроек, поэтому я предполагаю, что что-то упустил.

Обновление: похоже, что все решения, которые я видел, предполагают объект Window или среду XAML. Это работает внутри службы Windows, которая не имеет пользовательского интерфейса. Мне нужен способ программно повлиять на этот параметр.

Я специально переключился с GDI + на WPF, потому что GDI + имеет утечки памяти при длительных процессах, таких как сервисы и веб-приложения.

Ответы [ 2 ]

3 голосов
/ 04 июня 2010

Единственный способ повлиять на настройку BitmapScalingMode - это наследовать от класса DrawingVisual и установить его через защищенный метод доступа:

// exposes BitmapScalingMode (also works for other protected properties)
public class MyDrawingVisual : DrawingVisual
{
    public BitmapScalingMode BitmapScalingMode
    {
        get { return this.VisualBitmapScalingMode; }
        set { this.VisualBitmapScalingMode = value; }
    }
}

Если кто-то еще знает о лучшем способе установить это, я был бы рад услышать об этом.

Похоже, это будет работать:

RenderOptions.SetBitmapScalingMode(myDrawingVisual, BitmapScalingMode.HighQuality);

... но это не так. Очевидно, что выход за пределы среды выполнения окон XAML должен означать, что он не может установить соответствующие значения.

1 голос
/ 04 июня 2010

По умолчанию BitmapScalingMode был Fant в 3.0, но в 4.0 теперь это BiLinear. Вы можете изменить настройки по умолчанию несколькими различными способами. Пара описана здесь .

...