Изменение размера изображения в Alias ​​WPF v4, но не под v3.5

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

  1. Изменены ли настройки WPF по умолчанию между версиями 3.5 и 4.0?

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

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

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

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

2 ответа

Решение

Единственный способ, которым я смог повлиять на настройку 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 должен означать, что он не может установить соответствующие значения.

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

Другие вопросы по тегам