2008-09-15 12 views

cevap

2

Flash içeriğini görüntülemek için kullandığınız denetim WPF'de yerleşik değilse, bu "hava sahası" sorunlarına girersiniz. Win32'dan WinForms'a kadar her ekran teknolojisi HWND'leri "kaputun altında" kullandı ancak WPF DirectX'i kullanıyor. Ancak Windows'daki Pencere Yöneticisi, HWND'leri hala anlar, bu nedenle WPF uygulamaları bir üst düzey HWND tabanlı pencereye sahiptir ve bunun altındaki her şey DirectX'te yapılır (aslında içerik menüleri ve araç ipuçları gibi şeyler de üst düzey HWND'lere sahiptir) . Adam Nathan, this article numaralı telefondan WPF interopunun çok iyi bir açıklamasına sahiptir.

0

Flash içeriğini XAML'ye dönüştürmek için İfadeyi kullanabilir misiniz? Bunu yapan tarafın içinde veya dışında araçlar olduğuna inanıyorum.

1

Bunu yapmamasına rağmen, WPF 3.5 içinde Flash içeriğinizi sarmak için WPF 3.5 sp1'de bulunan WebBrowser denetimini kullanabilirsiniz. Şeffaflığın nasıl etkileneceğinden emin değilim.

+0

Değeri için: Bunu denedim ve WebBrowser denetimi Flash içeriğini güzel bir şekilde barındırıyor, ancak yukarıda bahsedilen hava sahası kısıtlamalarını ihlal edemezsiniz. –

-1

Sadece nasıl görüntülenme sorunuyla aynı sorunla uğraşıyorsunuz & WPF'yi Flash görüntüleme yeteneği ile şeffaf hale getirin çünkü MainWindow "Saydamlığa izin ver" seçeneğini etkinleştirirseniz, uygulama çalıştıktan sonra Flash gösterilmez.

1) Flash (.swf) dosyalarını oynatmak için WebBrowser Control'ü kullandım. Bilgisayarımdaydılar, ancak internetten ya da nerede olursanız olun oynayabilirler. C# içinde almak için WebBrowser Kontrol ismini unutma. şeffaflık Şimdi

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' içinde "Saydamlığa İzin Ver" e ayarlıyorum ve "Pencere Stili" ni "Hiçbiri" olarak ayarladım.) (

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

Ve Window_Loaded onu seslendi: Bundan sonra HERE ve HERE bilgi kullanılan ve MainWindow şeffaflığı sağlayan ve aynı zamanda Flaş çalışan istenen etkiyi üretilen bir aşağıdaki kodu oluşturduk, burada benim kodudur + Çalışmak için 'DllImport' için 'aşağıda' satırına ihtiyacınız var.

using System.Runtime.InteropServices; 
using System.Windows.Interop; 
İlgili konular