Amélioration de la conversion WPF Bitmap vers BitmapSource pour un affichage fluide des images à fréquence d'images élevée
Le maintien d'un affichage fluide de l'image sur le contrôle Image
de WPF à des taux de rafraîchissement élevés (par exemple, 30 Hz) nécessite une conversion efficace de System.Drawing.Bitmap
à System.Windows.Media.Imaging.BitmapSource
. La méthode CreateBitmapSourceFromHBitmap
courante peut être coûteuse en termes de calcul, entraînant une utilisation élevée du processeur et un impact sur les performances.
Conversion améliorée pour des performances améliorées
Pour des performances supérieures, une approche plus directe est recommandée. Cela implique de verrouiller les bits du bitmap et d'accéder directement à ses données de pixels. La spécification précise du PixelFormat
lors de la conversion améliore encore la vitesse. Le code suivant illustre cette méthode optimisée :
<code class="language-csharp">public static BitmapSource Convert(System.Drawing.Bitmap bitmap) { var bitmapData = bitmap.LockBits( new System.Drawing.Rectangle(0, 0, bitmap.Width, bitmap.Height), System.Drawing.Imaging.ImageLockMode.ReadOnly, bitmap.PixelFormat); var bitmapSource = BitmapSource.Create( bitmapData.Width, bitmapData.Height, bitmap.HorizontalResolution, bitmap.VerticalResolution, PixelFormats.Bgr24, null, bitmapData.Scan0, bitmapData.Stride * bitmapData.Height, bitmapData.Stride); bitmap.UnlockBits(bitmapData); return bitmapSource; }</code>
Cette conversion optimisée atteint généralement des vitesses au moins quatre fois plus rapides que CreateBitmapSourceFromHBitmap
.
Atteindre 30 Hz et au-delà : optimisation holistique
Bien que cette conversion améliorée réduise considérablement la charge du processeur, atteindre et maintenir 30 Hz (ou plus) peut nécessiter des optimisations supplémentaires au niveau de l'application. La taille de l'image, les étapes de traitement et les limitations matérielles jouent tous un rôle. Un profilage approfondi des applications pour identifier les goulots d'étranglement est crucial pour maximiser les performances à des fréquences d'images élevées.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!