Я пытаюсь использовать веб-камеру, чтобы делать фотографии для значков. Для этого я использовал библиотеку directshow.net и примеры. Это дало мне экран предварительного просмотра веб-камеры в .NET, отображаемый в окне изображения в соответствии с образцом DxSnap. Теперь я хочу наложить на него прямоугольник, который можно перемещать и изменять размер (фиксированное соотношение сторон), чтобы конечный пользователь перетаскивал его поверх человека, чтобы получить изображение с веб-камеры в соответствующей точке. Таким образом, это будет выглядеть примерно так:
Я подумал, что для этого нет проблем, источник веб-камеры помещается в окно изображения. Я просто наложу его на прозрачную панель или рамку изображения и использую обычный код .NET, чтобы создать прямоугольник. Если я наложу обычную панель, она появится над выходом веб-камеры DirectShow, как и ожидалось. Однако, если я использую этот трюк для реализации прозрачной панели или изображения:
protected override CreateParams CreateParams
{
get
{
CreateParams createParams = base.CreateParams;
createParams.ExStyle |= 0x00000020; // WS_EX_TRANSPARENT
return createParams;
}
}
protected override void OnPaintBackground(PaintEventArgs e)
{
// Do not paint background.
}
К сожалению, он появляется под выводом directshow. Есть ли простой способ обойти этот или альтернативный метод. Я бы предпочел не слишком углубляться в directshow.net, если этого можно избежать, я думал, что это будет простой способ избежать этого.