0

我有一个简单的用例。我有一个预览窗口,其中显示了一个 USB 网络摄像头。现在这个预览窗口是不可点击的,即没有检测到点击事件。结果,我想在此预览窗口顶部放置一个透明对象。这样我就可以向它添加点击事件。有没有办法让任何对象真正透明,以便显示它背后发生的任何事情?

4

3 回答 3

1

我有一个类似的问题。解决了我的问题,但可能不是你的。

我用过:定时器间隔是30ms。图片框相机馈送。

我有一个计时器,在每一次滴答声中,我都将其设置为从网络摄像头馈送中捕获图像并将其发送到图片框,并将捕获的图像设置为图片框.图像。图片框填充视图以充当预览窗口。

我在图片框上有点击事件,然后让我点击视图然后继续。

于 2013-08-07T08:41:50.963 回答
1

您可以使用以下技术挂钩您LiveDeviceSource以捕获发送给它的消息:

public class Form1 : Form { 
   public Form1(){
      InitializeComponent();
      proc = new LiveDeviceSourceProc();
      Load += (s,e) => {            
         proc.AssignHandle(yourLiveDeviceSource.Handle);
      }; 
      proc.Click += (s,e) => {
         //you can also process your code here
      };
   }
   LiveDeviceSourceProc proc;
   public class LiveDeviceSourceProc : NativeWindow {
     protected override void WndProc(ref Message m){
        if(m.Msg == 0x202)//WM_LBUTTONUP   <=> Left Mouse Click
        {
            //process your code here
            if(Click != null) Click(this,EventArgs.Empty);
        }
        base.WndProc(ref m);
     }
     public event EventHandler Click;
   }
}
于 2013-08-07T11:37:11.473 回答
0

首先,在你的表单中,你Enabled有财产,你可以这样做:

this.Enabled = false;

使整个表单禁用。

其次,但不推荐,您可以创建自己的透明控件 - 请在此处阅读。

于 2013-08-07T08:31:57.390 回答