我有一个简单的用例。我有一个预览窗口,上面显示了一个usb摄像头。现在这个预览窗口是不可点击的,即不会检测到点击事件。因此,我想把一个透明的对象放在这个预览窗口的顶部。这样我就可以给它添加一个点击事件。有没有一种方法可以让任何对象真正透明,这样它就可以显示它背后发生的事情?
发布于 2013-08-07 16:41:51
我也遇到过类似的问题。解决了我的问题但可能不是你的。
我使用:计时器间隔是30ms。图片盒摄像头提要。
我有一个定时器,在每一个滴答器上,我设置它来捕获网络摄像头馈送的图像,并将其发送到图片盒,并将捕获的图像设置为picturebox.Image。图片框填充视图以充当预览窗口。
我在图片框上点击了事件,然后让我点击视图,然后继续。
发布于 2013-08-07 19:37:11
您可以使用以下技术连接到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-07 16:31:57
首先,在您的表单中,您具有Enabled
属性,您可以执行以下操作:
this.Enabled = false;
若要禁用整个窗体,请执行以下操作。
第二,但不推荐,你可以创建你自己的透明控件--阅读here。
https://stackoverflow.com/questions/18097926
复制相似问题