【WPF小功能】WPF獲取控件的句柄

項目需要獲取顯示控件的句柄
獲取相機的實時圖像需要傳入窗體上顯示控件的句柄
但是!!!
WPF的控件是沒有句柄的,不是指沒有.Handle這個屬性(當然也沒有)。而是!WPF的控件都是畫出來的,不具有獨立的句柄,是畫!出!來!的,都是像素點而已。畫布一層一層而已!
所以用關鍵字“WPF 控件 句柄”搜到的類似這樣的方案,行不通

1、在WPF中,獲取當前窗體的句柄與WINFORM中不一樣:
WINFORM直接獲取:this.Handle----------this是窗體的類名,handle就是句柄。
2、WPF中先引用命名空間:System.Windows.Interop;
IntPtr hwnd = new WindowInteropHelper(this).Handle;----this就是要獲取句柄的窗體的類名;
3、控件句柄,同樣引用 :System.Windows.Interop:
IntPtr hwnd = ((HwndSource)PresentationSource.FromVisual(uielement)).Handle;----uielement就是要獲取句柄的控件,該控件必須繼承自UIElement。

你用控件也只能獲取到窗體的句柄,wpf上所有的控件用這個方法獲取的句柄都跟窗口是同一個,因爲它們是畫出來的!

所以就只能用最後的方案了,在WPF裏調用Winform的控件了(儘管想極力避免這樣子 哎):

 xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"
        xmlns:wfi="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration"
     
 <wfi:WindowsFormsHost>
      <wf:Panel x:Name="m_LeftPanel"
               Margin="5, 5, 5, 5"
              BackColor="#22ffffff" />
</wfi:WindowsFormsHost>

記錄一下,牆內牆外搜了一堆,牆內只有頭上的那個結果!不知道是真的就我不行,還是作者和轉載的不負責。
可我那樣寫真的沒有用啊==
求教!T.T

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章