@Horoko

Как в WPF беспрерывно показывать в Image битмап?

Сабж. Есть метод, который на вход получает WriteableBitmap(с видеопотока Kinect), в методе, WriteableBitmap конвертируется в обычный Bitmap, затем с ним происходит работа, и на выходе я конвертирую его в BitmapSource. Собственно, как мне беспрерывно отображать этот битмап в Image? DispatcherTimer жутко забивает память. Есть ещё какие то способы?

З.Ы Я новичок в c# и WPF соответственно.
  • Вопрос задан
  • 1438 просмотров
Решения вопроса 1
@Horoko Автор вопроса
Повесил мой Image<> в ImageBox поставляемый Emgu, а не в Image WPF`овский. Теперь память не улетает.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@tex0
З.Ы Я новичок в c# и WPF соответственно.

Курите в сторону биндинга.
У Image (если я не ошибаюсь) есть свойство Source (тип свойства ImageSource. BitmapSource вроде как наследуется от этого типа).
В CodeBehind определяете свойство, например так (BitmapContainer.cs)
class BitmapContainer : INotifyPropertyChanged
{
    public BitmapContainer()
    {
        //...
        DataContext = this; 
        //...
    }

private BitmapSource varBmpSrc_;

    public BitmapSource BmpSrc 
    {
        get
        {
            return varBmpSrc_;
        } 
        set
        { 
            varBmpSrc_ = value; 
            OnPropertyChanged("BmpSrc");//обязательно!!! Имплементить INotifyPropertyChanged интерфейс
        }
    }
}


Далее в разметке (XAML) (BitmapContainer.cs.xaml)
...
    <Image Source={Binding BmpSrc, UpdateSourceTrigger=PropertyChanged} />
    ...


И далее, по идее, когда вы будете задавать свойство BmpSrc у объекта класса BitmapContainer, cвойсво Source у Image будет меняться на новое.

//где-то на просторах вашего кода
    bitmapContainerObject.BmpSrc = Converter(WriteableBitmap);
Ответ написан
AxisPod
@AxisPod
Оно не будет работать нормально, копайте хотя бы в сторону DirectShow, процессор ваши желания не потянет.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы