2011-10-10 6 views
2

웹캠을 사용하여 배지 사진을 찍으려고합니다. 이를 위해 나는 directshow.net 라이브러리와 예제를 사용했다. 이것은 DxSnap 샘플에 따라 picturebox에서 렌더링 된 .NET의 웹캠 미리보기 화면을 가지고있다. 이제는 이동 및 크기 조정이 가능한 사각형 (가로 세로 비율)을 오버레이하여 최종 사용자가이 점을 드래그하여 해당 지점의 웹캠에서 이미지를 가져 오려고합니다. 그래서 다음과 같이 보일 것입니다 :directshow.net 웹캠 오버레이 투명 패널

Example Image

내가 문제를 생각하지 이렇게하려면 웹캠 소스는 그냥 투명 패널 또는 그림 프레임을 오버레이 정상 사용합니다 그림 상자에 배치됩니다. 거기에 직사각형을 만드는 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에 너무 깊이 파고 들지 않는 것을 선호한다. 나는 이것을 피하는 쉬운 방법이라고 생각했다.

답변

1

DirectShow.NET 대신 AForge.NET 프로젝트를 사용하게되었습니다. 그것은 정말 훌륭한 샘플을 가지고 있으며 비디오 출력을 통해 그림을 그릴 때마다 비디오 플레이어 OnPaint 이벤트를 처리하는 것처럼 간단합니다. 그것은 CPU를 조금 더 먹는 것 같지만 너무 과세하지 않습니다.

+0

답변에 만족하면 답변으로 표시해야합니다. –

+0

공개 된 현상금이 있기 때문에 다른 제안이 있었는지 확인하기 위해 조금 남겨 뒀으며 나중에 다른 사람이 다른 사람에게 대안을 제공하기를 원할 수 있습니다. – PeteT

+0

이것은 완전히 나를 구했습니다! 잘 했어. 나는 전에이 도서관에 대해 몰랐다. – ashays

0

오버레이 문제는 비디오 어댑터에서 비 RGB 표면을 만드는 특정 방법을 통해 일반 GUI 그래픽과 다른 방식으로 비디오가 표시된다는 것입니다. 따라서 Windows와 비디오를 겹치거나 GDI를 직접 사용할 수 없습니다.

도중에 비디오를 수정하거나 특수 믹서를 사용하여 비디오를 오버레이 할 수 있습니다.

이 질문을 참조하십시오 : Showing a semi-transparent Image object over an IVideoWindow in C# using DirectShow.NET 비슷한 요청을 논의합니다.

관련 문제