Podczas projektowania aplikacji jedną z kluczowych kwestii jest wyodrębnienie potencjalnie czasochłonnych operacji z kodu, oraz przystosowanie ich do działania w osobnych wątkach. Gdy w grę wchodzi GUI, czynność ta jest wręcz niezbędna. Standardowym modelem jest przygotowanie wszystkich danych wejściowych dla długotrwałego procesu i przekazanie ich do nowego wątku; tam też rozpoczynając asynchroniczną pracę. Po jej zakończeniu, odbieramy wyniki i już bez znaczących przestojów możemy odpowiednio na nie za...
Kilka postów temu wspominałem, że piszę aplikację pod Windows Phone 7. Chyba pochwaliłem się przedwcześnie bo zaraz potem musiałem odstawić projekt na boczne tory. Po pewnym czasie wróciłem do niego. Problemem, na którym zatrzymałem się poprzednio był związany z synchroniczną obsługą żądań wysyłanych przez obiekt HttpWebRequest. Co w tym nadzwyczajnego? Ano w Silverlight, w obiekcie HttpWebRequest, nie istnieje metoda GetReposne. Dostępne jest "tylko" wersja asynchro...
Ostatnimi czasy dość intensywnie wykorzystuje wzorzec projektowy MVVM (MVVM Light Toolkit). Zgodnie ze sztuką, nie blokuję UI i wszystkie bardziej skomplikowane operacje wykonuję asynchronicznie. Do tego celu najczęściej używam BackgroundWorker lub ThreadPool, ze wskazaniem na BackgroundWorker względu na bogatszą funkcjonalność (OnProgressChanged, OnCompleted itd.). Z czasem gdy V...
Korzystając z obecnej popularności bloga chciałbym ogłosić nabór chętnych do kontynuacji projektu! Otóż, gra 3D, której fundamenty stworzyłem w technologii XNA na potrzeby konkursu „Daj się poznać”, a którą można sobie ściągnąć, zobaczyć i podejrzeć od strony kodu… potrzebuje wsparcia. Sam tego dalej w szybkim tempie nie rozwinę, a chciałbym. W skrócie – chciałbym stworzyć team, który mógłby rozwijać ze mną grę. Team chętnych projektantów/programistów i nie tylko takich osób, które chciałyby „po godzinac...
WPF 3D, to zestaw funkcjonalności WPF-a,pozwalający na tworzenie i wyświetlanie grafiki trójwymiarowej (3D). Jednym z głównych celów stawianych WPF 3D jest wsparcie grafiki 3D w dziedzinie interaktywnych interfejsów użytkownika.
Dodatek pozwala programistom używającym WinForms używać kontrolek Microsoft Windows 7 Ribbon w aplikacjach. Ponadto, zawiera on bibliotekę RibbonLib, która zapewnia wsparcie dla wstążki i proste przykłady, napisane w C# i VB.NET, pokazujące, jak używać biblioteki i różnych dostępnych właściwości wstążki.
Autor: Czas żeby wykorzystać napisaną w ostatnim poście kontrolkę do wyświetlania obrazków przedstawioną w poprzednim poście. Na razie wykorzystywana będzie jedynie podczas przeglądania struktury dysku. Sprzężenie między aktualnym katalogiem a zdjęciami również będzie tymczasowe. Aby w prosty sposób móc przekazać listę zdjęć do kontrolki ImageListView wystawiona na zewnątrz niej zostanie jedna DependencyProperty typu ObservableCollecion
Autor: W poprzednim wpisie opisany został algorytm, jakim można się kierować przy wypracowywaniu rozwiązania pozwalającego na interakcję myszy ze sceną 3D. W tym wpisie zaprezentowany zostanie gotowy kod w języku C# pozwalający na osiągnięcie założonego celu. 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.W przygotowani...
Autor: O tym jak obracać obiekty (lub kamerę) w scenie 3D pisałem już jakiś czas temu w artykułach: „Transformacje i przekształcenia 3D” „Obracamy, przesuwamy, skalujemy? Kamerę (i nie tylko)”. W oparciu o opisane tam rozwiązania i przy pomocy kontrolek typu Slider, tworzona przeze mnie aplikacja (MeshDiagram3D), transformuje kamerę w scenie, przez co sprawia wrażenie transformacji sceny. Nie każdemu jednak spodoba się przesuwanie suwaków (Slider), niektórzy chcieliby pewnie obracać scenę, „łapiąc” za ob...
Niemal każdy program graficzny ma funkcjonalność: „dopasuj obraz do wielkości strony” (Zoom to fit, Auto-Zoom, itp ...). Zobaczmy jak można zrealizować taką funkcjonalność w programie pokazującym sceny 3D oparte o WPF 3D.
autor: Wykonywałem ostatnio skomplikowane akrobacje z bashem, plikiem /etc/rc.local, modułami kernela i innymi linuksowymi wynalazkami, aby uruchomić system spod znaku pingwina na swoim laptopie. Problem leżał w posiadaniu przezeń dwóch kart graficznych, działających w trybie hybrydowym, z których jedna (zintegrowana) działa zawsze, natomiast druga (zewnętrzna) budzi się na żądanie w celu obsłużenia bardziej skomplikowanych aplikacji graficznych i gier. Naturalnie Linux nie jest przygotowany do współprac...
Autor: Tym razem nie będzie nic odkrywczego, a wpis ten jest raczej „ku pamięci”, abym nie musiał więcej razy tego szukać (a może jeszcze komuś się przyda ...). Otóż te wpis będzie poświęcony iloczynowi wektorowemu.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.Czemu potrzebowałem iloczynu wektorowego? Otóż w aplikacji,...
Większość aplikacji w jakich tworzeniu uczestniczyłem była aplikacjami webowymi. Postanowiłem zmierzyć się z innym zadaniem – aplikacją desktopową, która oparta będzie o dostępne w .NET mechanizmy. Nie jest to komercyjny projekt a poligon testowy polegający na określeniu architektury, zaprojektowaniu systemu i jego implemenacji. Wiadomo – teoria teorią, jednak dopiero zderzenie się w praktyce z poruszanymi zagadnieniami pozwala na nauczenie się czegokolwiek zdecydowanie skuteczniej. Tyle tytułem nudnego...
autor: Pisałem wcześniej, że WPF 3D może być wykorzystane przy budowie interfejsów użytkownika, zastanówmy się więc jak można zapewnić interakcję sceny 3D z użytkownikiem. W tym artykule pokazane będzie jak można wyznaczyć wskazany myszą obiekt w scenie 3D. 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.Aby zapewnić uży...
Od jakiegoś czasu borykałem się z problemem przypisania nazw i ich wartości w comboboxie. Dla mnie to były dane i ich id w bazie danych. Przypisanie odbywało się podczas wywoływania zdarzenia Click dla comboboxu. W kodzie wyglądalo wszystko ok, ale podczas klikania zostal wywoływany error :Items collection cannot be modified when the DataSource property is set Ale problem udało się rozwią...
Kontynuując poprzedni wpis dotyczący nauki przez przykład, określiłem tzw. opowieści użytkownika. Pozwoli to na zdefiniowanie wymagań dotyczących budowanej aplikacji. Jeśli będziemy wiedzieć czego użytkownik oczekuje, będziemy mogli zaproponować rozwiązanie spełniające te wymagania. Poniżej opowieści: Aplikacja ma wspomagać zarządzanie zadaniami rozdzielanymi dla użytkowników firmy.Po wykonaniu zadania, przenoszone jest ono do „archiwum”, tak aby możliwy był podgląd zrealizowanych już zadańZadania mają p...
Po opublikowaniu mojego ostatniego wpisu dotyczącego LINQ i jego mniej znanych funkcjonalności i trików zastanawiałem się, czy w zbiorze metod oferowanych przez LINQ znajdzie się coś równie niedocenionego i równie użytecznego jak SelectMany(). Nie oczekiwałem zbyt wiele, jednak ku mojemu zaskoczeniu udało mi się odnaleźć perełkę w postaci przeciążenia metody Aggregate(). Przy okazji dowiedziałem się czegoś nowego o Where() i przypomniałem sobie o metodach służących ...
Prawie trzy lata temu, w listopadzie 2007, światło dzienne ujrzał .NET Framework 3.5, a razem z nim LINQ. Przez ten czas w sieci pojawiły się dziesiątki artykułów opisujących Language Integrated Query, jego zalety, wady oraz możliwości. Przy okazji namiętnego refaktoringu części projektu Rankingu Sejmowego (również z użyciem LINQ) pomyślałem, że dobrze byłoby zebrać w jednym miejscu informacje dotyczące mniej znanych ale bardzo przydatnych trików związanych z wykorzystaniem LINQ. ...
Jednym z problemów, na jakie może napotkać programista tworzący trójwymiarową scenę przy pomocy WPF 3D, jest rysowanie linii. W tym artykule zostanie opisane, dlaczego taki problem może zaistnieć i jak go można rozwiązać.
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 ...