我怎麼能夠在WPF窗體中託管Flash內容,並仍然在我的WPF窗口上使用透明度/ alpha?託管一個WinForms Flash控件不允許這樣做。如何在WPF應用程序中託管Flash內容並使用透明度?
2
A
回答
2
除非用於顯示Flash內容的控件是在WPF中構建的,否則您將遇到這些「空域」問題。從Win32到WinForms的每種顯示技術都使用HWND「隱藏」,但WPF使用DirectX。然而Windows中的窗口管理器仍然只能理解HWND,所以WPF應用程序有一個基於HWND的頂層窗口,並且所有這些都是在DirectX中完成的(實際上,上下文菜單和工具提示也具有頂級HWND) 。 Adam Nathan對WPF的互操作有很好的描述,在this article。
0
您可以使用Expression將Flash內容轉換爲XAML嗎?我相信在那裏有或沒有工具可以做到這一點。
1
儘管我沒有這樣做,但您可以使用WPF 3.5 sp1中的WebBrowser控件將您的Flash內容封裝到WPF中。我不確定透明度如何受到影響。
-1
剛剛一直在努力解決如何上傳相同的問題&使WPF透明並具有顯示Flash的能力,因爲如果您在MainWindow上啓用「允許透明度」,Flash將不會在應用程序運行後顯示。
1)我用WebBrowser控件播放Flash(.swf)文件。他們在我的電腦上,但是它可以從互聯網上播放,也可以在任何地方播放。不要忘了命名您的WebBrowser控件以在C#中實現。
private void Window_Loaded(object sender, RoutedEventArgs e)
{
MyHelper.ExtendFrame(this, new Thickness(-1));
this.MyBrowser.Navigate(@"C:\Happy\Download\flash\PlayWithMEGame.swf");
}
2)現在透明度。我已將WPF'false'設置爲「Allow Transparency」並將「Window Style」設置爲「None」。從那以後,我已經從HERE和HERE使用的信息,並創建了生產允許在主窗口的透明度和運行在同一時間的Flash所需效果的下面的代碼,這裏是我的代碼:
public class MyHelper
{
public static bool ExtendFrame(Window window, Thickness margin)
{
IntPtr hwnd = new WindowInteropHelper(window).Handle;
window.Background = Brushes.Transparent;
HwndSource.FromHwnd(hwnd).CompositionTarget.BackgroundColor = Colors.Transparent;
MARGINS margins = new MARGINS(margin);
DwmExtendFrameIntoClientArea(hwnd, ref margins);
return true;
}
[DllImport("dwmapi.dll", PreserveSig = false)]
static extern void DwmExtendFrameIntoClientArea(IntPtr hwnd, ref MARGINS margins);
}
struct MARGINS
{
public MARGINS(Thickness t)
{
Left = (int)t.Left;
Right = (int)t.Right;
Top = (int)t.Top;
Bottom = (int)t.Bottom;
}
public int Left;
public int Right;
public int Top;
public int Bottom;
}
,並稱之爲從Window_Loaded() +你需要'DllImport'的'下面'行才能工作。
using System.Runtime.InteropServices;
using System.Windows.Interop;
相關問題
- 1. 如何在MFC應用程序中託管WPF內容?
- 2. 在WPF/Surface應用程序內託管WPF/Surface應用程序
- 3. 如何在Java Micro Edition應用程序中使用Flash內容?
- 4. 如何在WPF 4應用程序中託管Silverlight 4應用程序?
- 5. 如何在WPF應用程序中託管終端會話(mstsc)?
- 6. 我將如何在WPF中託管外部應用程序?
- 7. WPF應用程序中的不透明度
- 8. WPF - 半透明應用程序
- 9. 你如何爲託管內容提供應用程序
- 10. 僅WPF應用程序託管代碼?
- 11. 如何在godaddy vps託管中託管角應用程序?
- 12. 如何訪問託管在容器中的應用程序URL?
- 13. 在WPF應用程序內託管WCF Web服務
- 14. 如何在混合應用程序中執行異常處理? (託管應用程序使用非託管DLL)
- 15. 內容不顯示在angular.js Web應用程序,而託管
- 16. 如何在獨立(非託管)應用程序中使用jndi?
- 17. wpf透明度
- 18. 高非託管內存 - WPF應用程序
- 19. 如何使用Facebook應用鏈路託管動態內容 - IOS
- 20. 使用iptables透明Webproxy應用程序
- 21. 使用JSF應用程序中的反射讀取託管bean的內容
- 22. 在iOS應用程序中使用Apple託管內容時,是否可以在購買前下載內容?
- 23. 如何託管LightSwitch應用程序?
- 24. 如何從非託管應用程序
- 25. 在WPF應用程序中託管win32窗口?
- 26. 在WPF應用程序中加載非託管DLL
- 27. 在元素主機中託管複合WPF應用程序
- 28. Prism V2:在WPF/WinForm應用程序中託管shell
- 29. 在WPF項目中託管Flash電影
- 30. 無法使用應用程序加載程序上載應用內購買的託管內容
對於它的價值:我試過這個,WebBrowser控件很好地託管Flash內容,但是你不能違反上面提到的空域約束。 – 2009-06-05 19:13:05