Ассеяния изменения размера изображений в WPF V4, но не под v3.5

StackOverflow https://stackoverflow.com/questions/2967936

Вопрос

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

  1. Изменилась ли настройка WPF по умолчанию между v3.5 и v4.0?

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

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

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

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

Это было полезно?

Решение

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top