Bild -Größen -Aliasing in WPF v4, jedoch nicht unter v3.5
-
24-10-2019 - |
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.
Hat sich eine Standard -WPF -Einstellung zwischen v3.5 und v4.0 geändert?
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.
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.