2010-01-29 4 views
2

Je recherche un contrôle Image pour WPF qui peut rapidement changer d'image. Le WPF intégré est assez lent pour les tailles d'image en utilisant (mis à l'échelle). J'ai seulement besoin d'environ 3 FPS. J'ai envisagé de laisser tomber à WinForms et même D3D mais je ne suis pas sûr que c'est le meilleur moyen.Contrôle d'image Fast WPF

Quelqu'un peut-il suggérer quelque chose?

Répondre

4

Le contrôle Image de WPF utilise les sous-systèmes «Windows Imaging» et Direct3D natifs de Windows pour faire son sale boulot, donc s'il est utilisé avec les bons parémètres, il sera à peu près aussi rapide que tout ce que vous trouverez.

Je suppose que le problème est que vos paramètres entraînent Windows Imaging charger l'image en pleine résolution, puis avoir Direct3D l'échelle. La solution consiste à effectuer la mise à l'échelle lorsque vous chargez l'image en définissant DecodePixelHeight et DecodePixelWidth sur le BitmapImage que vous utilisez comme ImageSource.

Une autre technique que de nombreuses applications graphiques utilisent pour accélérer les choses est de précharger les images en arrière-plan. Par exemple, la visionneuse d'images Windows démarre automatiquement le chargement de l'image suivante dès que l'image actuelle est affichée.

Si vous préchargez des images, envisagez de le faire dans un fil séparé. Assurez-vous également que vous utilisez BitmapCacheOption.OnLoad lorsque vous créez le BitmapImage ou que le préchargement ne se produit pas réellement (la valeur par défaut est OnDemand).

+0

Merci, c'est très utile. J'ai eu le problème de préchargement que vous avez mentionné, donc BitmapCacheOption.OnLoad devrait être très utile. –