2008-09-15 5 views

Antwort

2

Wenn das Steuerelement, das Sie zum Anzeigen des Flash-Inhalts verwenden, nicht in WPF integriert ist, werden Sie in diese "Luftraum" -Ausgaben hineinlaufen. Jede Display-Technologie von Win32 bis WinForms verwendet HWNDs "unter der Haube", aber WPF verwendet DirectX. Der Windows-Manager in Windows versteht jedoch immer noch nur HWNDs, also haben WPF-Anwendungen ein HWND-basiertes Fenster der obersten Ebene, und alles darunter ist in DirectX erledigt (tatsächlich haben Dinge wie Kontextmenüs und Tooltips auch Top-Level-HWNDs) . Adam Nathan hat eine sehr gute Beschreibung von WPF Interop in this article.

0

Kann mit Expression der Flash-Inhalt in XAML konvertiert werden? Ich glaube, dass es Werkzeuge gibt, die da sind oder zur Seite, die das tun.

1

Obwohl ich es nicht getan habe, können Sie wahrscheinlich das WebBrowser-Steuerelement in WPF 3.5 SP1 verwenden, um Ihren Flash-Inhalt in WPF zu verpacken. Ich bin mir nicht sicher, wie die Transparenz beeinflusst wird.

+0

Für was es wert ist: Ich habe es ausprobiert und das WebBrowser-Steuerelement hostet Flash-Inhalte gut, aber Sie können die Luftraumbeschränkungen, die oben erwähnt werden, nicht verletzen. –

-1

Ich habe gerade mit demselben Problem zu kämpfen, wie hochzuladen & Machen Sie WPF transparent mit der Fähigkeit zur Anzeige von Flash, denn wenn Sie auf Ihrem MainWindow aktivieren "Transparenz zulassen" Flash wird nicht angezeigt, sobald die Anwendung ausgeführt wird.

1) Ich habe WebBrowser Control verwendet, um Flash (. SWF) -Dateien zu spielen. Sie sind auf meinem PC, aber es kann aus dem Internet spielen oder wo auch immer Sie sie gehostet haben. Vergessen Sie nicht, Ihr WebBrowser-Steuerelement zu benennen, um in C# zu gelangen.

private void Window_Loaded(object sender, RoutedEventArgs e) 
{ 
    MyHelper.ExtendFrame(this, new Thickness(-1));  
    this.MyBrowser.Navigate(@"C:\Happy\Download\flash\PlayWithMEGame.swf");   
} 

2) nun für Transparenz. Ich habe in WPF "false" auf "Transparenz zulassen" gesetzt und "Window Style" auf "None" gesetzt. Danach habe ich Informationen aus HERE und HERE und erstellt einen folgenden Code verwendet haben, die Transparenz gewünschte Wirkung erzeugt auf Mainwindow zuzulassen und Blitz bei gleichzeitig laufen, hier ist mein Code:

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; 
    } 

und nannte es aus Window_Loaded() + Sie brauchen eine 'untere' Zeile, damit 'DllImport' funktioniert.

using System.Runtime.InteropServices; 
using System.Windows.Interop; 
Verwandte Themen