저는 DirectShowNET 샘플에서 DxLogo 프로젝트로 작업 해 왔습니다. 이렇게하면 비디오에 이미지가 추가되지만 움직이면 이미지 색상이 왜곡되며 투명 배경도 처리되지 않습니다.[directshow.net] 비디오를 캡처하는 동안 이미지 (워터 마크)를 어떻게 추가 하시겠습니까?
Bitmap v = new Bitmap(m_videoWidth, m_videoHeight, m_stride, PixelFormat.Format32bppArgb, pBuffer);
그런 다음 새로운 비트 맵에 워터 마크를 추가 :
Graphics g = Graphics.FromImage(v);
g.DrawImage(m_Bitmap, 0, 0, m_Bitmap.Width, m_Bitmap.Height);
v = new Bitmap(v.Width, v.Height, g);
순서대로 그 요인 ...
내가 비트 맵에 프레임을 변환해야하는 방법 몇 가지를 처리 할 수 있도록
그런 다음 BufferCB가 프레임으로 새 비트 맵을 가져 오게되면 그 부분이 멈추게됩니다. 어떻게 그럴 수 있니?
원래 DxLogo BufferCB 방법 :
int ISampleGrabberCB.BufferCB(double SampleTime, IntPtr pBuffer, int BufferLen)
{
// Avoid the possibility that someone is calling SetLogo() at this instant
lock (this)
{
if (m_bmdLogo != null)
{
for (int x = 0; x < m_bmdLogo.Height; x++)
{
CopyMemory(ipDest, ipSource, (uint)m_bmdLogo.Stride);
ipSource = (IntPtr)(ipSource.ToInt32() + m_bmdLogo.Stride);
ipDest = (IntPtr)(ipDest.ToInt32() + m_stride);
}
}
}
return 0;
}
감사합니다!