是一个MFC对话框项目。
通过DirectShow获取USB摄像头视频,显示在picture control里面。
现在用GetHDC(),在视频的surface上画圆,显示在视频的上面。但是,当移动窗口,或者最大最小化窗口时,圆消失了。目前尝试在OnPaint里面调用画图函数,但是在视频上仍然看不到圆,如果不显示视频,圆才会一直显示
在picture control上面,请问怎么回事?另外:怎么实现让圆在视频上面移动?是调用重绘函数,改变圆的位置吗?

解决方案 »

  1.   

    用一个topmost窗口显示在上面,直接显示在picture control上面?
    你播放视频时picture control被一层dshow子窗口覆盖了呀,你显示在picture control上面的
    圆自然看不到了
      

  2.   

    画图函数:先显示视频图像,然后获取视频surface的hdc,然后在hdc上画图。
    但是,用按钮调用画图函数,圆就可以显示在视频的上面;我在Onpaint里面调用画图函数的时候,就被覆盖了。
    为什么?这个要怎么解决呢?
      

  3.   

    请问楼上的,我的目的是,在usb摄像头的视频上画线和圆?
    摄像头视频已经可以显示到picture control上了。现在是画图。
    如果上面的方法不对,那该用什么?本人系菜鸟。
    ->你怎么知道视频窗口什么时候刷新?
    就是对窗体进行操作或者窗体被覆盖的时候,比如弹出任务管理器(个人理解)。
      

  4.   

    视频窗口时时都会刷新的吧,要不怎么显示动态的视频?
    一般做法是在视频上建个透明的窗口然后在上面画文字实现
    复杂点的话直接在视频上画 这个好像要自己实现个filter,在transfilter里画
      

  5.   

    是的。
    现在的状态是,只要不动改窗口,显示就正常。我是直接在视频的主页面上画的。如果用filter,麻烦hurryboylqs说详细点,或者show出关键代码示例也可以,谢谢了。