Пишу простое приложение для захвата видеопотока с IPкамеры на винформах используя фреймворк AForge. Что бы код не был свалкой, вынес многие вещи в отдельную библиотеку, в том числе и захват видеопотока от камеры. Создал в классе библиотеки делегат и событие:
public event ImageWithDetectionChangedEventHandler CameraImageChanged;
public delegate void ImageWithDetectionChangedEventHandler(object sender, Bitmap img);
Так же метод для захвата:
public void CreateMjpegVideoStream(string url)
{
// Создаем MJPEG видео ресурс с удаленной камеры
MJPEGStream stream = new MJPEGStream(url);
// set event handlers
stream.NewFrame += Video_NewFrame;
stream.Start();
}
В этом методе подписался на событие:
private void Video_NewFrame(object sender, NewFrameEventArgs eventArgs)
{
_bitmap = eventArgs.Frame;
}
А вот как пробросить изменения уже в форму? Вот так хочу запустить поток
private void btnStart_Click(object sender, EventArgs e)
{
_videoMaker.CreateMjpegVideoStream(tbEnteredUrl.Text);
_videoMaker.CameraImageChanged += CameraServiceCameraImageChanged;
}
и здесь изменять содержимое PictureBox:
private void CameraServiceCameraImageChanged(object sender, Bitmap img)
{
pbCameraStream.Image = img;
}
И чувствую, что поплыл, и не могу понять как это дело организовать. Буду благодарен за любую помощь!
Возможно вы имели ввиду получить доступ к контролу из другого потока? Установить ему Image можно так.
private void CameraServiceCameraImageChanged(object sender, Bitmap img)
{
var SetImage = new Action(() => { pbCameraStream.Image = img; });
if (pbCameraStream.InvokeRequired)
pbCameraStream.Invoke(SetImage);
else
SetImage();
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть следующий код, который хранит в себе экземпляры, реализующих 1 интерфейс, классов и по запросу выдаёт нужный, в зависимости от ключа ( он тут...
Я пытаюсь заимплементить последнюю версию YandexMapkit в мой Xamarin