2008-09-15 3 views

답변

2

Flash 내용을 표시하는 데 사용하는 컨트롤이 WPF로 작성되어 있지 않으면 이러한 "공역"문제로 실행됩니다. Win32에서 WinForms에 이르기까지 모든 디스플레이 기술은 HWND를 "내부적으로"사용했지만 WPF는 DirectX를 사용합니다. 그러나 Windows의 창 관리자는 여전히 HWND 만 인식하므로 WPF 응용 프로그램에는 최상위 수준의 HWND 기반 창 하나가 있으며 그 아래의 모든 내용은 DirectX에서 처리됩니다 (사실 컨텍스트 메뉴와 툴팁에도 최상위 HWND가 있습니다) . Adam Nathan은 this article에 WPF interop에 대한 설명이 있습니다.

0

Expression을 사용하여 플래시 콘텐츠를 XAML로 변환 할 수 있습니까? 나는 거기에 도구가 있다는 것을 믿습니다.

1

아직 해본 적이 없지만 WPF 3.5 sp1에있는 WebBrowser 컨트롤을 사용하여 WPF 내에서 Flash 내용을 래핑 할 수 있습니다. 투명도가 어떻게 영향을 받을지 모르겠습니다.

+0

가치가있다 : 나는 이것을 시도했으며 WebBrowser 컨트롤은 Flash 내용을 멋지게 호스팅하지만 위에서 언급 한 공역 제한을 위반할 수는 없습니다. –

-1

업로드하는 방법과 동일한 문제로 어려움을 겪고 있습니다. & MainWindow에서 "투명성 허용"을 선택하면 응용 프로그램이 실행되면 Flash가 표시되지 않으므로 Flash를 표시하는 기능으로 WPF를 투명하게 만듭니다.

1) 나는 WebBrowser 컨트롤을 사용하여 Flash (.swf) 파일을 재생했습니다. 그들은 내 PC에 있지만 인터넷이나 어디에서나 재생할 수 있습니다. 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'으로 설정했습니다.) (

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에서라고 : 그 후 나는 HEREHERE 정보를 사용 MainWindow를에 투명성을 허용하고 동시에 플래시를 실행 원하는 효과를 제작 한 다음 코드를 만들었습니다, 여기에 내 코드입니다 + 'DllImport'가 작동하려면 '아래'라인이 필요합니다.

using System.Runtime.InteropServices; 
using System.Windows.Interop; 
관련 문제