|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Проблемы с рисованием на форме
Привет Знатокам!
Имеется форма, условно называемая WCV. На нее положена панель Panel1. На панель положен Image1. На панель выводится видео с Веб камеры: Код:
void __fastcall TWCV::OpenVideo(void) { hWndC = capCreateCaptureWindowA("My Own Capture Window", WS_CHILD | WS_VISIBLE, WCV->Panel1->Left, WCV->Panel1->Top, WCV->Panel1->Width, WCV->Panel1->Height, WCV->Panel1->Handle, 0); if (hWndC!=0) { capDriverConnect (hWndC,DeviceIndex); capPreviewScale (hWndC, -1); capPreviewRate (hWndC,0x42); capPreview (hWndC,-1); SetWindowPos (hWndC, HWND_BOTTOM, WCV->Panel1->Left, WCV->Panel1->Top, WCV->Panel1->Width, WCV->Panel1->Height, SWP_SHOWWINDOW); } } Любые попытки нарисовать на Image1, например, рамку определенного размера ни к чему не приводят - ее не видно! Код:
void __fastcall TWCV::ConturDraw(int X, int Y) { Image1->Transparent = true; Image1->Canvas->Brush->Color = clAqua; Image1->Canvas->Brush->Style = bsSolid; TRect R(0,0,160,160); Image1->Canvas->FrameRect(R); } Админ: Пользуемся тегами для оформления кода! Вопроса как всегда два: "Кто виноват? И что делать?" Ну или по другому спрошу: 1. Почему не видно нарисованных на Canvas линий??? 2. Как обеспечить возможность рисования??? Спасибо! Последний раз редактировалось Admin, 09.01.2015 в 16:47. |
#2
|
|||
|
|||
1. Как я понимаю, вывод происходит напрямую через DirectX. В этом случае действительно, при попытке рисования на канве все будет затерто следующим кадром с камеры (а скорее всего вообще не отрисуется, т.к. Handle заблокирован).
2. Надо перехватывать каждый кадр, отрисовывать на нем, а потом уже отрисовывать этот кадр самому на панели. Возможно поможет покопаться в DirectX и отрисовывать на кадрах прямо внутри него. |
Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
Onic777 (09.01.2015)
|
#3
|
||||
|
||||
Видео рисуйте в image1 а не в panel, потом с этого иimage можно получить в любой момент битовый образ, который можно будет отрисовать в другой image, на котором уже можно будет нарисовать все что угодно
|