W poprzednich wpisach opisane zostały zagadnienia związane z rysowaniem linii w scenach 3D oraz wymienione zostały pewne gotowe rozwiązania pozwalające takie linie rysować. Zastanówmy się jednak chwile i pomyślmy nad rozwiązaniami alternatywnymi, przecież scena 3D wyświetlona na płaskim ekranie jest tylko pewnego rodzaju projekcją trójwymiarowej przestrzeni na płaszczyznę, więc dlaczego nie rysować zwykłych linii bezpośrednio na tej płaszczyźnie?
Niniejszy wpis poza prezentacją różnych i niezależnych od konkretnego wykorzystania treści stanowi również opis pewnych zagadnień związanych z projektem Mesh Diagram 3D.Informacje dotyczące projektu oznaczone są etykietą MeshDiagram3D.
Zgadza się, można wykorzystać płaszczyznę, na którą rzutowany jest trójwymiarowy obiekt i właśnie na tej płaszczyźnie rysować zwykłe linie dwu-wymiarowe (lub dowolne inne obiekty:
punkty, ikony, przyciski, listy wyboru, itp...). Omawiana tutaj metoda, została już raz na tym blogu przedstawiona w artykule: „[WPF
3D] Napisy płaskie (WPF 2D) (przykłady w języku C#)”. Polega ona na nałożeniu na Viewport3D elementu, na którym będziemy rysować lub umieszczać inne obiekty. Może to być np. element typu Canvas:
Przykładowy kod XAML pozwalający na nałożenie dwóch elementów
jeden na drugi, przedstawiony został we wspomnianym artykule.
Oczywiście należy jeszcze uwzględnić projekcję elementu 3D na
płaszczyznę 2D, tak by linie (lub inne elementy) ustawiać lub
rysować w odpowiednich miejscach:
Należy więc poznać współrzędne punktu 3D na płaszczyźnie 2D,
można to osiągnąć np. poprzez wykorzystanie funkcji Get2DPoint
ze wspomnianego artykułu.
O tym jak narysować już proste elementy graficzne nie będę już
tutaj pisał, zachęcam do przeczytania o tym na MSDN-nie, np. w
artykule: „Shapes
and Basic Drawing in WPF Overview”.
Super artykuł, bardzo fajnie opisany temat.
OdpowiedzUsuń