Domanda

Sto usando WPF per una condotta di ridimensionamento delle immagini che ha lavorato splendidamente sotto .NET v3.5. Ho appena aggiornato il progetto per v4.0 di destinazione e ora tutti i miei immagini ridimensionate sono fortemente alias. Nessuno del codice dell'immagine gasdotto è cambiata.

  1. ha un'impostazione predefinita WPF cambiato tra v3.5 e v4.0?

  2. Come faccio a controllare il dithering delle mie immagini bitmap ridimensionate in WPF?

sto usando BitmapImage, DrawingVisual, DrawingContext, RenderTargetBitmap, BitmapEncoder e BitmapFrame ma io non sto vedendo tutte le proprietà relative al dithering. GDI + ha avuto un gruppo di impostazioni, quindi immagino che mi manca qualcosa.

Aggiornamento: sembra che tutte le soluzioni che ho visto assumere un oggetto o un ambiente Window XAML. Questo viene eseguito all'interno di un servizio di Windows che non ha interfaccia utente. Ho bisogno di un modo per influenzare programmazione questa impostazione.

I specificamente passato da GDI + per WPF perché GDI + ha perdite di memoria nella gestione di lungo processi come servizi e applicazioni web.

È stato utile?

Soluzione

L'unico modo sono stato in grado di influenzare l'impostazione di BitmapScalingMode è quello di ereditare dalla classe DrawingVisual e impostare tramite la sua funzione di accesso protetto:

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

Se qualcun altro sa di un modo migliore per impostare questo, mi sarebbe stato entusiasta di sentire su di esso.

Sembra che questo dovrebbe funzionare:

RenderOptions.SetBitmapScalingMode(myDrawingVisual, BitmapScalingMode.HighQuality);

... ma non è così. A quanto pare essere al di fuori del tempo di esecuzione a finestre XAML deve significare che non è possibile impostare i valori appropriati.

Altri suggerimenti

Il BitmapScalingMode predefinito era Fant in 3.0 ma in 4.0 è ora bilineare. È possibile modificare il valore di default alcuni modi diversi. Un paio descritto qui .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top