2009-12-17 4 views
2

나는 (적어도 나를 위해) 다소 힘들어하는 것을 가지고있다. 나는 그걸 알아 내려고 많은 시간을 보냈다. C# winform 응용 프로그램이 있습니다. 응용 프로그램에서 나는 서로의 상단에 웹 페이지를 쌓을 수 있도록 투명한 색상으로 서로 위에 여러 웹 페이지를 제시해야합니다. 웹 페이지에 백 컬러가 지정되지 않도록하고, WebBrowser 컨트롤을 TransparentcyKey 및 BackgroundColor가 설정된 별도의 WinForm에 배치하면 쉽게 할 수 있습니다. 화이트. 여러 양식을 열면 투명하게 동작하고 필요한 효과를 얻습니다..NET에서 사용자 컨트롤의 투명한 웹 브라우저

오픈 모양과 같은 형태의 힙을 가지고있는 것은 제 의견으로는 단지 내가 원하는 것보다 더 지저분한 것입니다. 따라서 내 생각은 UserControl에 넣고 거기에 필요한 논리를 추가하거나 단순히 웹 브라우저에서 기능을 상속하고 무시하는 것입니다. 그러나 UserControl은 폼과 같은 투명성 키를 노출시키지 않으므로 초기에는 막 다른 길입니다. UserControl에서 WndProc를 재정 의하여 직접 페인트를 처리해도 아무런 효과가없는 것 같습니다. 그것은 WebBrowser가 실제로 액세스 할 수없는 것과 같습니다. 아마 랩된 ActiveX라는 것과 관련이 있습니다.

파생 된 WeBrowser 또는 WebBrowser가있는 UserControl을 가질 수없는 경우 누구나 폼을 처리 할 수있는 방법에 대한 제안 사항이 없으므로 배치 할 때 클리핑과 관련하여 사용자 컨트롤과 같은 역할을합니다. "어머니"형태의 맨 위에 있습니까?

최저 Ragards 프란츠 톰센

답변

4

WebBrowser 컨트롤은 인터넷 옵션에서 지정한 배경색을 사용하여 배경을 지 웁니다. 다른 윈도우의 이미지와 블렌드하려면 레이어 (SetLayeredWindowAttributes/UpdateLayeredWindow)를 사용해야합니다.

그러나 자식 창 (이 경우 WebBrowser 컨트롤)에서는 레이어가 작동하지 않습니다. 다른 레이어로 만들려면 소유 한 최상위 창을 만들어야하며, 기본 창에서 자리 표시 자 컨트롤 위에 동일한 위치에 정확히 위치해야합니다. 자리 표시 자 컨트롤을 이동/크기 조정할 때 계속 이동하고 크기를 조정해야합니다. 소유자가 있으면 응용 프로그램의 기본 창에서 자동으로 최소화되고 파괴됩니다. 그리고 그것은 당신이 자식 윈도우처럼 보이게 만들 필요가 있습니다. 즉, 경계선이없고 ShowInTaskbar = false입니다.

자세한 내용은 http://blogs.msdn.com/changov/archive/2009/01/19/webbrowser-control-on-transparent-wpf-window.aspx을 참조하십시오.

웹 페이지에 참여하는 IE 창 그리기 프로세스 대신 직접 화면에 쓰는 하드웨어 가속 ActiveX/DirectX 전환 및 필터가있는 경우 운이 좋지 않을 수 있습니다.

+0

안녕 Sheng 내 질문에 대한 답변을 주셔서 대단히 감사합니다. 참조하는 예제는 솔루션을 볼 수있는 한 구현합니다. 크기, 위치 등을 따르는 WinForm이있는 곳을 설명합니다. 나는 scollbars 등이 필요하고 양식을 클립해야 할 때 꽤 해결책이 아닙니다. SetLayeredWindowAttributes 및 UpdateLayeredWindow에 대해 작성한 내용은 상당히 흥미 롭습니다.하지만 어떻게 사용할 수 있는지 잘 모르겠습니다. 내 문제와 관련된 모든 사례를 알고 계십니까? 감사합니다 .-) 최고 감사합니다 Franz Thomsen –

+0

예쁜 해결책은 없습니다. WPF 예제와 WinFOrm 투명도는 모두 SetLayeredWindowAttributes/UpdateLayeredWindow를 호출하여 구현해야합니다. –

관련 문제