Ho bisogno di disegnare un'immagine sul componente Image
a 30Hz. Io uso questo codice:conversione veloce Bitmap in Bitmap Origine wpf
public MainWindow()
{
InitializeComponent();
Messenger.Default.Register<Bitmap>(this, (bmp) =>
{
ImageTarget.Dispatcher.BeginInvoke((Action)(() =>
{
var hBitmap = bmp.GetHbitmap();
var drawable = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
hBitmap,
IntPtr.Zero,
Int32Rect.Empty,
BitmapSizeOptions.FromEmptyOptions());
DeleteObject(hBitmap);
ImageTarget.Source = drawable;
}));
});
}
Il problema è che con questo codice, il mio utilizzo della CPU è di circa 80%, e, senza la conversione è circa il 6%.
Quindi, perché la conversione di bitmap è così lunga?
Ci sono metodi più veloci (con codice non sicuro)?
ciò che viene visualizzato se non c'è conversione? Il consumo della CPU è di circa il 6% senza alcuna bitmap visualizzata? – Clemens
sì, la fotocamera invia un evento con una nuova cornice, ma nessuna conversione e non viene visualizzato nulla. – Epitouille
Quindi, come fai a sapere che non tutto il consumo dell'80% della CPU viene utilizzato solo per la visualizzazione di 30 BitmapSources al secondo e la conversione non richiede assolutamente nulla? – Clemens