Próbuję stworzyć efekt podobny do funkcji przyciemniania świateł/świateł w programie Adobe Lightroom (http://www.youtube.com/watch?v=87hNd3vaENE) z wyjątkiem WPF.Tworzenie półprzezroczystego okna w WPF, które pozwala przejść przez zdarzenia myszy
Próbowałem utworzyć kolejne okno z mojego istniejącego okna, uczynić je przezroczystym i umieścić na nim półprzezroczystą geometrię ścieżki. Ale chcę, aby zdarzenia myszy były w stanie przejść przez to półprzezroczyste okno (do okien poniżej).
Jest to uproszczona wersja tego, co mam:
<Window x:Class="LightsOut.MaskWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
AllowsTransparency="True"
WindowStyle="None"
ShowInTaskbar="False"
Topmost="True"
Background="Transparent">
<Grid>
<Button HorizontalAlignment="Left" Height="20" Width="60">click</Button>
<Path IsHitTestVisible="False" Stroke="Black" Fill="Black" Opacity="0.3">
<Path.Data>
<RectangleGeometry Rect="0,0,1000,1000 "/>
</Path.Data>
</Path>
</Grid>
Okno jest całkowicie przezroczysty, więc w miejscach, gdzie ścieżka nie obejmuje zdarzenia myszy przechodzą na wylot. Jak na razie dobrze. IsHitTestvisible jest ustawione na false na obiekcie ścieżki. Więc zdarzenia myszy przejdą przez to do innych kontrolek w tej samej formie (np. Możesz kliknąć przycisk, ponieważ jest on w tej samej formie).
Jednak zdarzenia myszy nie będą przechodzić przez obiekt Path do okien znajdujących się pod nim.
Wszelkie pomysły? Lub lepsze sposoby rozwiązania tego problemu?
Dzięki.
Dzięki temu właśnie tego szukałem. – RMK
To jest niesamowite, chciałbym osiągnąć jeszcze jedną rzecz: ukrywanie kursora. zasadniczo ustawienie kursora na None, ale z tym kodem COOOOL w miejscu kursor zmienia się w zależności od tego, co znajduje się pod oknem. Czy istnieje sposób, aby kliknięcia spadały przez nasze okno ORAZ nie wyświetlały się kursora? –
działa idealnie! Byłem w stanie użyć metody "click through" w oknie WPF w aplikacji WinForm. – Alex