如何在视频窗口中画出透明的图片,如VideoWindow或者一个显示视频的panel上?(100分)

  • 主题发起人 主题发起人 marron
  • 开始时间 开始时间
M

marron

Unregistered / Unconfirmed
GUEST, unregistred user!
在考虑写个可以拍大头贴的程序。
不想使用两个Form做透明,虽然很好实现,但是感觉程序不是很舒服。
一、我使用DSPack连接做截图,视频显示在一个VideoWindow中,但怎么样能把图片透明的显示在上层呢?(大头贴效果)

二、使用VFW把视频显示在一个panel中,同样怎么样实现如上功能?

如果直接canvas的话,顶多只能把画出图片的Alpha效果,不能实现图片的部分透明。

大侠路过给请指点!谢过!
 
知道的人稍微指点一下,DFW离线包和google搜了N遍了,都找不到一个合适的解决方案
 
折腾了半天终于解决了,但不知道怎么把这个帖子结束掉,汗自己一个! ^_^!!
 
把分给我就可以结束了^_^
 
procedure TForm1.DrawBitmap(X, Y: Integer;
ResName: string);
var Map: TBitmap;
begin

Map := TBitmap.Create;
Map.TransparentColor := clFuchsia;
//要屏蔽的背景色
Map.Transparent := true;
//透明
Map.LoadFromResourceName(hinstance, ResName);
//加载资源图片
DSVideoWindowEx21.Canvas.Draw(X, Y, Map);

Map.Free;
end;
 
忘记补充一点,这样canvas上去的图象很难保存下来。
楼上的方法好象不能够满足要求
 
另外VideoWindow和VMRBitmap有Canvas方法,但为什么不支持在上面画呢?
 
怎么没有人给点办法吗
 
有没有部分透明的的啦,
除非用这个SampleGrabber,得到每一帧图像,然后在一帧一帧的半透明叠加
 
用VMR我也觉得效果不好的,他只能实现整幅图像的Alpha叠加,我说的是一幅图像上有透明的,有不透明的哪种啦,还有半透明的
 
我原先是利用SampleGrabber的缓冲区处理每一帧的,但是太消耗资源了,CPU占用仍然很高,如果能单独处理最好,即触发事件时进行处理。
 
现在是采用在缓冲区里混合图象,然后输出到image或者可以自己画出来,参考了一下demo,但是在缓冲区处理图象一方面CPU占用太多,一方面偶尔会出现程序异常,不知道是代码问题,还是处理方式的问题
 
如果真的要实现全透明叠加,应该是不怎么可能的吧,除非是自已从新写一个Filters,
在通过Filters为每一帧叠加
 
我在考虑用其他方式,不一定非要在显示时就混合叠加,可以先这样表现出来,或者使用多层窗口都可以,但是需要一种效率比较高的方法。
 
多层窗口叠加应该效果不是很好吧,特别是一些边缘会出现锯齿,
 
没有写过Filter,我再找找资料吧,如果有写过或有示例的朋友帮帮忙
 
如何让twebBrow 是透明的呢
 
不明白你的用意
 
关注些问题,我想装两个视频叠加显示,不保存也行
 
/to goddy,通过设置窗口透明度
 

Similar threads

后退
顶部