如何在DSPACK控件中动态的VideoWidnow上用鼠标画线

zqdue 2009-08-08 09:37:39
如果用Canvas画线的话,在静态还可以,在动态就不行了!请大家多多招教!
...全文
168 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
yktd26 2009-08-14
  • 打赏
  • 举报
回复
这是我今天无意间找到的,可能之后对你有用

One alternative is to use another form.

1. create a new form for the osd
2. override createparams in the osd form
3. in createparams set the parent to the video form:

Code:
procedure TOSDForm.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.WndParent := FormPlayWin.Handle
end;



this will make the osd form sit above the video form when it is visible

4. add a label to the osd form
5. enable transparency and set the colour of the form to the transparent colour.
6. set the BorderStyle of the osd form to bsNone
7. use the WindowPosChanging message in the video form to keep the position of the osd form relative to the video window.

Code:
procedure WMWindowPosChanging(var Msg: TWMWindowPosChanging); message WM_WINDOWPOSCHANGING;

procedure TFormPlayWin.WMWindowPosChanging(var Msg: TWMWindowPosChanging);
begin
inherited;
// OSDForm.Left := Msg.WindowPos^.x + 10;
end;



8. enable doublebuffering in the osd form
zqdue 2009-08-13
  • 打赏
  • 举报
回复
偶像,对不起啊!实在是不知道如何做!能不能我发我的DEMO程序给你,你帮我改改看啊!
yktd26 2009-08-13
  • 打赏
  • 举报
回复
好,邮箱你知道
zqdue 2009-08-12
  • 打赏
  • 举报
回复
偶像!你所以说的加了一个ColorSpaceConverter之后加一个VideoWindow我不太懂啊!
而且好像不可以同时用一个DSVideoWindowEx2和VideoWindow的!
yktd26 2009-08-12
  • 打赏
  • 举报
回复
我没说清楚
我的意思是说你手动链接一个ColorSpaceConverter Filter 然后连上Overlay Mixer Filter最后连上VideoWindow(vmNormal)这样就不用DSVideoWindowEx2
其实这个DSVideoWindowEx2也是用的Overlay Mixer Filter但是有时当Overlay Mixer Filter无法链接时,他好像什么都不说,只是触发一个事件。你就自然不能画线了
据我遇到的情况,Overlay Mixer Filter能不能连上和上游Filter输出和显卡有关,所以在他之前加上一个ColorSpaceConverter Filter可能能解决问题
这个ColorSpaceConverter Filter类似的滤波器有几个,你可以先试试AVIDecompressor,还有一个MainConcept的ColorSpaceConverter Filter很好用,但是要找到破解的,当然还有那个叫ColorSpaceConverter Filter的ColorSpaceConverter Filter
嘿嘿
zqdue 2009-08-11
  • 打赏
  • 举报
回复
偶像终于出现了啊!谢谢啊!
1.这个DSVideoWindowEx2是可以的!但它没有VideoWindow好用,因为我要经常做抓屏的动作,DSVideoWindowEx2不支持抓屏的!(最后没有办法的情况下只好用它的啦)
2.我之前就是一直用VMR替代的,但我现在的天敏SDK3000这视频卡不支持VMR,一用VMR电脑就会死机的!呵呵

yktd26 2009-08-11
  • 打赏
  • 举报
回复
他这个DSVideoWindowEx2有的时候好像确实不怎么好用,可能是他不能成功连接Overlay Mixer可能是他上游的filter输出原因
建议你可以尝试手动连接一个Overlay Mixer,在他之前加一个ColorSpaceConverter之后加一个VideoWindow
zqdue 2009-08-11
  • 打赏
  • 举报
回复
如果用DSVideoWindowEx2在USB视频卡的时候是可以画线的,但在PCI视频卡的时候一样不可以画线啊!救命!
zqdue 2009-08-10
  • 打赏
  • 举报
回复
先谢谢3楼和4楼的朋友

3楼,你的办法我试过,在动态的时候不可以!
4楼,麻烦你,给一个简单的代码显范一下!谢谢了
sanguomi 2009-08-10
  • 打赏
  • 举报
回复
GetWindowDc(Handle)
用这个DC画吧
xjq2003 2009-08-10
  • 打赏
  • 举报
回复
你把
doublebuffer:=true;
zqdue 2009-08-10
  • 打赏
  • 举报
回复
各位高手帮帮忙啊!帮顶一下也好啊!谢谢大啦!
yktd26 2009-08-10
  • 打赏
  • 举报
回复
但是有个问题,他会暂时关闭windows aero如果是vista或者7
在DSPACK里有个DSVideoWindowEx2你可以看看,其实是一个东西
否则好像可以用VMR替代,就是VideoWindow中mode vmVMR
不过这个东西我不太清楚怎么用,而且也有他的问题
yktd26 2009-08-10
  • 打赏
  • 举报
回复
zqdue不好意思,我昨天刚回来,回去光玩了,没怎没上网
VideoWidnow应该不支持OVerlay
如果想在视频图像上画东西,我觉得最简单的办法就是在Videowindow前加一个overlay mixer filter
如果需要我带回给你贴点代码
zqdue 2009-08-08
  • 打赏
  • 举报
回复
各位帮帮忙吧!
不知道的帮助顶一下吧!谢谢大家啦!

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧