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

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

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

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

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

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

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

5
задан mckamey 3 June 2010 в 23:15
поделиться

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 должно означать, что она не может установить соответствующие значения.

3
ответ дан 15 December 2019 в 00:51
поделиться

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

1
ответ дан 15 December 2019 в 00:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: