현재 transpareny 효과를 사용하는 Winforms 앱이 있습니다. 그러나 이것은 뒤에있는 진실한 고통 인 것을 증명하고 있습니다! 임 학습으로 Winforms는 투명성을 특히 잘 다루지 않습니다.C# Winforms-WPF interop
투명도 비트 및 나머지 부분에 대해 winforms를 사용하여 WPF 구성 요소를 사용하는 것이 더 쉬울 지 궁금합니다 (전체 응용 프로그램을 WPF로 옮기는 것이 좋을지도 모르겠다!). WPF에 대해서는 아무 것도 알지 못합니다. 따라서 여기에는 이유가 있습니다! 내가 고려한 것은 :
1) Winforms 사용자 컨트롤 내에서 WPF 구성 요소를 호스팅하십시오. WPF 제어의 예 :
<UserControl x:Class="WindowsFormsApplication1.UserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="300" Width="300">
<Grid>
<Rectangle Name="rectangle1" Stroke="White" Fill="Black" RadiusX="10" RadiusY="10" Opacity="0.7" />
<Rectangle Margin="57,101,43,99" Name="dialog" Stroke="Gray" Fill="White" RadiusX="10" RadiusY="10" />
</Grid>
</UserControl>
2) WPF 제어의 흰색 직사각형 (대화) 내의 윈폼 사용자 제어 (콘텐츠)를 호스팅. 3) 내용 (Winforms 사용자 정의 컨트롤)이 WPF-Control의 부모에서 코드를 호출하도록 허용합니다.
중요한 것부터 먼저 ...
- 이 할 수있는 합리적인 일이 아니면 내가 잘못 짚었 무엇입니까?
- 더 쉬운 방법으로이를 달성 할 수 있습니까?
- 아무도 나를 도와 줄 수 있습니까? (샘플 코드는 감사하게 받아 들여질 것입니다!)
- 마지막으로 ... a) WPF를 배우고 b) 자급 자족 할 수있는 온라인 리소스가 있습니까?
@TK : WPF 및 Winforms와 혼합 된 렌더링 투명도가 문제이며, 그 중 하나가 해결 가능한지 여부는 알 수 없습니다. WPF와 WinForms는 근본적으로 다르며, 서로 호스트 할 수는 있지만 중첩 된 구성 요소는 올바르게 렌더링되지 않습니다. 그들은 뚜렷한 지역이 필요합니다. 나는 Adam Nathan의 책에서 그것을 읽었다 고 믿는다. 그러나 나는 그것을 참조 할 필요가 없다. 그래서 나는 틀린 것을 기억할 수있다. –
@ 그렉 D : 나는 당신이 절대적으로 옳다고 믿습니다. 문제는 각 컨트롤 (WPF 또는 Winforms)이 자신의 영공을 필요로한다는 것입니다. 즉, 특정 시점에서 화면의 픽셀은 WPF 픽셀 또는 Winform 픽셀 중 하나이며이 둘의 하이브리드가 아닙니다.Winforms 구성 요소를 BMP 파일로 렌더링 한 다음 bmp 파일을 다른 컨트롤의 배경으로 렌더링하여이 문제를 해결했습니다. 지저분한 ... 네,하지만 충분히 잘 작동하는 것 같습니다. –
영리한 접근법. 질문에 대한 답변에서 혼합 효과의 비트 맵으로 렌더링 할 winforms 컨트롤이있는 방법을 게시 할 수 있습니까? :) winforms 컨트롤에서 변경 사항을 캡처하고 비트 맵을 적절히 업데이트합니까? 아니면 투명도 효과 동안 winforms가 정적을 제어합니까? –