Я пытаюсь использовать веб-камеру для фотографирования значков. Чтобы сделать это, я использовал библиотеку directshow.net и примеры, в результате чего у меня появился экран предварительного просмотра веб-камеры в .NET, отображаемый в виде картинки в соответствии с примером DxSnap. Теперь я хочу наложить его на прямоугольник, который можно перемещать и изменять размер (фиксированное соотношение сторон), чтобы конечный пользователь перетаскивал его поверх человека, чтобы получить изображение с веб-камеры в соответствующей точке. Так это будет выглядеть примерно так:

Для этого я подумал, что нет проблем, источник веб-камеры помещен в графическое окно. Я просто наложу его на прозрачную панель или рамку рисунка и использую обычный код .NET, чтобы создать прямоугольник. Если я наложу обычную панель, она появится над выводом веб-камеры DirectShow, как и ожидалось. Однако, если я использую этот трюк для реализации прозрачной панели или Picturebox:
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, если этого можно избежать, я подумал, что это будет легкий способ избежать этого.