Для работы с компонентой требуется зарегистрировать ее в реестре для COM-взаимодействия. Сборка собрана под х32 (Microsoft Framework v2.0.50727). Этот момент следует учитывать при регистрации сборки в х64 системах, где параллельно существуют обе версии Framework. Все файлы примера доступны в архиве для скачивания и расположены в трех папках:
dll-com (файлы компонента для регистрации и библиотеки, а так же пример регистрации в файле register_me_32.bat )
WebCameraPlayerAxCtrl (исходные файлы проекта компонента для MS VS 2010)
Пример работы веб-камеры (файл внешней обработки для 1С где приведен пример работы с видеокамерой)
Сборка не подписана, поэтому при регистрации следует указывать параметр "/codebase" для задания пути в реестре, по которому следует искать сборку.
Кратко о принципах работы с компонентой:
На форме размещаем элемент управления ActiveX: "WebCameraPlayerAxCtrl.WebCameraPlayerControl"
для элемента управления необходимо назначить обработчки событий:
CustomingSizeVideoSourceInTargetWindowEventTrue (позволяет "подогнать" размер экрана видеокамеры на форме, под текущее разрешение камеры. Данные о видимой области изображения веб-камеры находятся в свойствах компонента frame_VisibleClipBoundsWidth, frame_VisibleClipBoundsHeight)
QRCodeToPlaintTextEventTrue (срабатывает при удачном декодировании qr-кода с изображения веб-камеры, расшифрованный текст расположен в свойстве компонента PlaintTextQRCode)
ImageToBase64StringEventTrue (срабатывает после вызова метода компонента GetCurrentImage(), после того как компонент сохраняет в свойстве CurrentImageToSaveBase64 , текущее, на момент вызова метода, изображение, полученное с веб-камеры; хранится изображение в строковом формате Base64)
BarCodeImageToSaveBase64EventTrue (срабатывает после вызова метода компонента GetBarCodeImage(ТекстДляКодирования, 12), Base64-версия картинки qr-кода хранится в свойстве компонента BarCodeImageToSaveBase64. 12 - это код выбора конструктора ZXing, который отвечает за кодирование текста в QR-формат. Коды других вариантов кодирования можно посмотреть в исходных файлах проекта.)
Метод StopCurrentVideoSource() компонента, стоит вызывать перед закрытием формы обработки, где расположен компонент, для корректного отключения от видеопотока.
Ссылки на проекты исходных кодов:
http://zxingnet.codeplex.com/ (библиотека для работы со штрих-кодами)
http://stackoverflow.com/ (собственно здесь был найден пример ActiveX-компонента и работа с событиями при регистрации .NET сборок для COM-взаимодействия)
http://www.aforgenet.com/ (библиотека для работы с видеопотоками)
P.S.: перед регистрацией компонента стоит предварительно подключить к компьютеру камеру (реальную или виртуальную).