2013-08-07 49 views
0

我有一個簡單的用例。我有一個預覽窗口,我正在顯示一個USB攝像頭。現在,此預覽窗口不可點擊,即無法在點擊事件中檢測到。結果我想在這個預覽窗口的頂部放置一個透明的對象。以便我可以添加點擊事件。 有沒有辦法讓任何對象真正透明,以便它顯示它背後發生的任何事情?如何在Windows窗體應用程序中使對象透明

+0

那豈不是更簡單實際上在預覽窗口中點擊檢測? – Jon

+0

@Jon我們已經嘗試了一切。預覽窗口沒有點擊事件。或者任何事件。它是微軟表達編碼器預覽窗口.... –

+0

是否「一切」包括[繼承窗口](http://msdn.microsoft.com/en-us/library/system.windows.forms.control.wndproc.aspx )來處理'WM_CLICK'? – Jon

回答

0

首先,在你形成,have Enable你的財產,你可以做

this.Enabled = false; 

使整個形式禁用 其次,你可以,但不推薦,你可以創建自己的透明控制然後開始閱讀here

1

我有一個類似的問題這一點。解決了我的問題,但可能不是你的問題。

我使用: 定時器間隔爲30毫秒。 圖片框 攝像頭饋送。

我有一個計時器,並在每個蜱我將其設置爲捕獲來自網絡攝像頭進料的圖像並將其發送到一個圖片框和所拍攝的圖像設置爲picturebox.Image。圖片框填充視圖以充當預覽窗口。

我點擊圖片框,然後讓我點擊查看,然後進行活動。

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; 
    } 
} 
相關問題