Question

J'utilise WPF pour un pipeline de redimensionnement d'image qui a travaillé magnifiquement sous .NET v3.5. Je viens de mettre le projet v4.0 cible et maintenant toutes mes images redimensionnées sont fortement crénelées. Aucun du code de conduite de l'image a changé.

  1. a un paramètre de WPF par défaut changé entre v3.5 et v4.0?

  2. Comment puis-je contrôler le tramage de mes images bitmap redimensionnées dans WPF?

J'utilise BitmapImage, DrawingVisual, DrawingContext, RenderTargetBitmap, BitmapEncoder et BitmapFrame mais je ne vois pas les propriétés liées à tramage. GDI + avait un tas de paramètres, donc je suppose que je manque quelque chose.

Mise à jour: il semble que toutes les solutions que j'ai vu supposer un objet de fenêtre ou de l'environnement XAML. Cela va à l'intérieur d'un service Windows qui n'a pas l'interface utilisateur. Je besoin d'un moyen d'influer sur ce paramètre programme.

je suis passé spécifiquement de GDI + pour WPF parce que GDI + a des fuites de mémoire dans la longue exécution de processus tels que les services et applications Web.

Était-ce utile?

La solution

La seule façon que je suis en mesure d'influer sur le réglage de BitmapScalingMode est d'hériter de la classe DrawingVisual et réglez via son accesseur protégé:

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

Si quelqu'un sait d'autre d'une meilleure façon de régler cela, je serais heureux d'entendre parler.

Il semble que cela fonctionnerait:

RenderOptions.SetBitmapScalingMode(myDrawingVisual, BitmapScalingMode.HighQuality);

... mais il ne fonctionne pas. Apparemment, étant en dehors du temps d'exécution fenêtrage XAML doit signifier qu'il ne peut pas définir les valeurs appropriées.

Autres conseils

Le BitmapScalingMode par défaut a été Fant dans la version 3.0, mais dans la version 4.0 est maintenant bilinéaire. Vous pouvez changer la valeur par défaut de plusieurs manières différentes. Un couple décrit ici .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top