Мне нужно нарисовать изображение на компоненте Image
на частоте 30 Гц.
Я использую этот код:
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;
}));
});
}
Проблема заключается в том, что с этим кодом использование моего процессора составляет около 80%, а без конвертации оно составляет около 6%.
Итак, почему преобразование растрового изображения так долго?
Есть ли более быстрый метод (с небезопасным кодом)?