Frage

Ich verwende WPF für eine Bildgrößenpipeline, die unter .NET v3.5 wunderschön funktioniert hat. Ich habe das Projekt gerade auf V4.0 aufgerüstet und jetzt sind alle meine gegründeten Bilder stark geändert. Keiner der Image Pipeline -Code hat sich geändert.

  1. Hat sich eine Standard -WPF -Einstellung zwischen v3.5 und v4.0 geändert?

  2. Wie steuere ich die Dithering meiner angegriffenen Bitmap -Bilder in WPF?

Ich benutze BitmapImage, DrawingVisual, DrawingContext, RenderTargetBitmap, BitmapEncoder, und BitmapFrame Aber ich sehe keine Eigenschaften, die sich auf Dithering beziehen. GDI+ hatte eine Reihe von Einstellungen, also vermute ich, dass mir etwas fehlt.

Aktualisieren: Es scheint, dass alle Lösungen, die ich gesehen habe, ein Fensterobjekt oder eine XAML -Umgebung annehmen. Dies läuft in einem Windows -Dienst, der keine Benutzeroberfläche hat. Ich brauche eine Möglichkeit, diese Einstellung programmatisch zu beeinflussen.

Ich habe speziell von GDI+ zu WPF gewechselt, da GDI+ Speicherlecks in langlebigen Prozessen wie Diensten und Web -Apps aufweist.

War es hilfreich?

Lösung

Der einzige Weg, wie ich die Einstellung von beeinflussen konnte BitmapScalingMode ist von der zu erben DrawingVisual Klasse und setzen Sie es über seinen geschützten Accessor:

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

Wenn jemand anderes einen besseren Weg weiß, würde ich mich freuen, davon zu hören.

Es scheint, dass dies funktionieren würde:

RenderOptions.SetBitmapScalingMode(myDrawingVisual, BitmapScalingMode.HighQuality);

... aber es tut es nicht. Anscheinend muss es bedeuten, dass die entsprechenden Werte nicht festgelegt werden können.

Andere Tipps

Der Standard -BitmapsCalingMode war in 3.0 fantastisch, aber in 4.0 ist er jetzt bilinear. Sie können den Standard auf einige verschiedene Arten ändern. Ein Paar hier beschrieben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top