Cześć, pisze aplikacje w WPF i natknąłem na problem którego nie mogę ruszyć w żaden sposób. W jednym z okien aplikacji uzytkownik ma mozliwosc pozycjonowania dwu obiektów względem siebie (testowo sa to dwa czworokąty, zapisane jako kształty typu Path), za pomoca myszy, użytkownik moze je przesuwac i obracać. Problem jaki napotkałem to to, że gdy jeden kształt zostaje nałożony na drugi to częśc wspólna powinna zostać zaznaczona graficznie np innym kolorem (ponadto potrzebowałbym jeszcze policzyc proporcjonalne pole powierzchni czesci wspolnej do powierzchni calkowitej obydwu kształtów).
Znalazłem funkcję która wydaje się ze mogłaby mi pomóc - FillContainsWithDetail. Ale nie wiem jak to polaczyc ze zmianą polozenia kształtu. Generalnie "PathGeometry Figures = "M 485.71429 360.93363....."" to są stałe wspolrzedne kształtu, a zeby uzyc funkcji FillContainsWithDetail, potrzebuje (wg mnie) aktualnej pozycji kazdego wierzchołka danej figury, aby go porownac z polozeniem wierzchołków drugiej figury.
Myslałem nad tym, aby jakos przetransformować wspolrzedne wierzcholkow w obydwu kształtach funkcja TransformToVisual a po zmianie polozenia jednego obiektu uzywac funkcji FillContainsWithDetail, ale nie potrafie tego ogarnac...
Fragment xamla z dwoma obiektami:
<Canvas Name="root" Margin="5,0,-3,0">
<Path Name="pathA" StrokeThickness="1" Fill="Red" Stroke="#FF000000" StrokeLineJoin="Miter" StrokeStartLineCap="Flat" StrokeEndLineCap="Flat" Height="120" Stretch="Fill" Width="175" Canvas.Left="20" Canvas.Top="110">
<Path.Data>
<PathGeometry Figures="M 485.71429 360.93363 237.14286 355.21935 240 520.93363 l 248.57143 2.85715" FillRule="evenodd"/>
</Path.Data>
</Path>
<Path x:Name="pathB" StrokeThickness="1" Fill="Blue" Stroke="#FF000000" StrokeLineJoin="Miter" StrokeStartLineCap="Flat" StrokeEndLineCap="Flat" Height="105" Stretch="Fill" Width="170" Canvas.Left="240" Canvas.Top="65">
<Path.Data>
<PathGeometry Figures="m 514.28571 483.79078 -257.14285 2.85714 -2.85715 222.85714 271.42858 0 z" FillRule="evenodd" />
</Path.Data>
</Path>
</Canvas>
To co mam w tym momencie:
To co chciałbym uzyskac:
Pomoże ktoś nakierować na właściwy tor rozwiązania?