W poprzedniej części zacząłem pisać o przekształceniach i transformatach, w tym wpisie pokazane zostaną przykłady jak można wykorzystać transformaty do poruszania kamerą. Okazuje się, że przekształcanie (w tym obracanie, przesuwanie) wszystkich elementów w scenie może być niewygodne i nieopłacalne (np. ze względów wydajnościowych), dlatego czasem lepiej będzie wykonać przekształcenie dla samej kamery.
Przy prezentacji grafiki 3D ciekawą funkcjonalnością może być umożliwienie użytkownikowi oglądanie sceny 3D z wielu punktów widzenia, obracania elementów sceny itp... W tym wpisie zaprezentowane zostanie jak można taką funkcjonalność stworzyć w WPF 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. Efekt oglądania sc...
Podczas prac związanych ze statystykami zauważyłem, że przy okazji pisania kolejnych testów dla obiektów repozytoriów powielam kod odpowiedzialny za przygotowanie bazy SQLite. Jak nakazuje dobry obyczaj, powtarzający się kod należy wydzielić.
Podobnie jak w przypadku większości standardowych operacji, gdy mowa o wysyłaniu poczty, biblioteka Microsoft .NET zawiera intuicyjnie zaprojektowane klasy pozwalające na szybką implementacje tej akcji we własnym kodzie. Pomimo niskiego stopnia trudności, pomysł zebrania wszystkich potrzebnych informacji w postaci krótkiego artykułu nie uważam za chybiony. Zapewne zaoszczędzi to czas programistom którzy szukają w pełni działającego przykładu, czy szybkiego przeglądu tego obszaru biblioteki .NET.
W poprzedniej części serii poświęconej tematyce WPF 3D, opisane zostały rodzaje materiałów, jakimi można pokrywać figury i bryły w tworzonej scenie 3D, pominięte ciszą zostały natomiast pędzle wykorzystywane do przygotowania odpowiedniego materiału. W tym wpisie wiadomości dotyczące pokrycia figur zostaną uzupełnione i omówione zostaną pędzle, które są elementem wykorzystanego materiału. Wykorzystanie pędzla jest konieczne do przygotowania materiału dla wybranej figury lub bryły w scenie. W odróżnieniu j...
Okiełznać mysz w XNA + WF Podstawowym elementem zaznaczania jest ustalenie pozycji myszy na ekranie. Przy pracy nad tą funkcjonalnością pewien delikatny niuans sprawił, że zajęło to zdecydowanie dłużej, niż zakładałem.Mysz w XNA Dobranie się do pozycji myszy w czystym XNA jest niezmiernie łatwo. Służy do tego obiekt klasy MouseState, który wypełniamy bieżącymi informacjami fragmentem kodu: MouseState mouseState = Mouse.GetState(); Po wykonaniu takiej operacji obiekt mouseState zawiera aktualną pozycję m...
Konwertery to bardzo przydatny mechanizm WPF'a pozwalający, w czasie procesu bindowania, na konwersję pomiędzy różnymi typami wartości. Wcześniej czy później przyjdzie taki monent, że będziemy musieli/chcieli napisać swój własny konwerter. Możemy zrobić to na kilka sposobów. Poniżej postaram się przybliżyć rózne sposoby implementacji konwertera z ich zaletami i wadami. Jako przykład w poniższych rozważaniach posłuży DateConverter z MSDN'a. Podejście pierwsze (StaticResource)Realizacja konwertera polega ...
Od pewnego czasu odgrażałem się, że napiszę kilka zapytań przy użyciu NHibernate. Teraz nadszedł ten czas. Za materiał treningowy posłużą mi wcześniej opisywane statystyki. Metodyka pisania zapytań jest następująca: najpierw SQL, później zapytanie w NH. Ma to na celu pokazanie w jaki sposób można przekładać T-SQL na język zapytań NH (w tym przypadku Criteria API).
Pliki .chm to prosty sposób na help do programu, dodatkowo polecono mi programik Precision Helper (freeware), który ułatwia tworzenie dokumentacji. Niestety WPF nie ma wbudowanego mechanizmu do obsługi tych plików. Oczywiście można posiłkować się klasą Help z biblioteki System.Windows.Forms. Pozostaje tylko pytanie czy warto dołączać dużą (ok 5MB) bibliotekę, aby skorzystać z jednej klasy. Moim zdaniem nie warto. Postanowiłem napisać moduł, który zajmie się obsługą plików *.chm w WPF. Po kilku godzinach...
Korzystanie z interfejsu INotifyPropertyChanged podczas pracy z WPF to praktycznie codzienność. Za którymś razem jednak implementacja tego interfejsu w kolejnej klasie może już zbrzydnąć. Dlaczego, więc nie skorzystać z refleksji i extensions methods? Metodę wywołującą zdarzenie PropertyChanged napiszemy raz i będziemy z niej korzystać do woli. Implementacja tej metody w moim wykonaniu wyglą...
Dzisiaj coś zupełnie z innej beczki. SAP Business One (SB1) , czyli "program księgowy". Jakiś czas temu miałem okazję popracować trochę z tym programem i zapoznać się z DI API. DI API to zestaw metod, za pomocą których możemy zautomatyzować proces tworzenia dokumentów księgowych w SB1. Czyli wygenerować dokumenty z poziomu własnego programu, przy użyciu "odpowiednich bibliotek". Bardzo przydatne w sytuacji gdy integrujemy program księgowy z innymi systemami i chcemy zautomatyzować proces powstawania doku...
Standardowo gdy tworzymy projekt typu Class library, Visual Studio pozwala nam na dodanie elementów WinForm i dosłownie jednego (User Control) elementu z palety WPF. Oczywiście dla bibliotek z elementami WPF przeznaczony jest projekt WPF Custom Cortol Library, ale czasem istnieje konieczność dodania kontrolek WPF'owych do istniejącej biblioteki i właśnie taki przypadek zostanie tutaj rozpatrzony.
Niektóre aplikacje warto wyposażyć w Splash Screen. W przypadku WPF-a (który jest wykorzystywany w DesktopInfo) sprawa jest banalnie prosta. Wystarczy dodać plik png do projektu a następnie we właściwościach pliku wybrać SplashScreen
Wczoraj (a właściwie dzisiaj) pisałem o pobieraniu lokalizacji za pomocą wbudowanej w Windows 7 platformy sensorów. Poniżej kawałek kodu, który już powinien być zrozumiały – wykorzystujący LatLongLocationProvider LatLongLocationProvider location = newLatLongLocationProvider(100); if (location.ReportStatus == ReportStatus.Running) { location.LocationChanged += newLocationChangedEventHandler(location_LocationChanged); location.StatusChanged += newLocationProviderStatusChangedEventHandler(location_St...
Od dawna nosiłem się z zamiarem poznania wzorca MVVM (Model-View-ViewModel), na którym opiera się WPF, jednak im głębiej go poznawałem tym bardziej wydawał mi się on irytujący. Problem z MVVM jest taki, że jest to tylko wzorzec, opisujący jedynie podstawy działania i przedstawiający założenia do ogólnej koncepcji jaką należy przyjąć w projekcie. W teorii wygląda to bardzo ładnie, oddzielenie interfejsu od logiki biznesowej miały pozwolić na rozdzielenie pracy programisty i designera. Zachowujemy porządek...
Przeglądając istniejący kod i planując utworzenie kolejnych obiektów repozytoriów doszedłem do wniosku, że warto zaoszczędzić sobie trochę czasu i napisać uniwersalny (na ile to możliwe) obiekt bazowy repozytorium. Obiekt ten powinien zawierać podstawowe metody manipulacji i dostępu do danych. Dużym ułatwieniem jest to, że wszystkie obiekty dziedziny dziedziczą po obiekcie Entity (przed refaktoringiem BaseEntity), który zawiera pole Id z bazy danych oraz ważną z punktu widzenia NH implementacje metod E...
Przed przystąpieniem do właściwych prac związanych z zapowiadanymi w ostatnim wpisie statystykami chciałem napisać jeszcze jeden test związany z zapisem danych do bazy. Chodziło o zapis obiektów kadencji i sprawdzenie czy zapisywany jest cały graf obiektów, czyli kadencja > posiedzenia > głosowania itd. Myślałem, że będzie to tylko formalność, ale jak to zazwyczaj w takich sytuacjach bywa nie obeszło bez problemów. Na szczęście były to tylko przejściowe problemy. W przypadku NHibernate (Fluent NHibernate...
W tym wpisie omówione zostaną materiały (i nie chodzi tutaj o krawiectwo), jakie mogą być wykorzystane pokrywanie figur w scenie 3D.
W przyszłym tygodniu będę mocno zajęty dlatego już dziś opublikuję dwa posty jako konkursowe przyszłotygodniowe ;-). Mam nadzięję, że nie jest to wbrew zasadom. Dziś będzie krótki wpis na temat sposobu na zrobienie na zwykłym panelu FlowLayoutu. Bardzo użyteczna funkcja np. gdy nad Gridem chcemy mieć filtry i chcemy żeby filtry pływały w zależności od rozmiaru okna jeden za drugim. Albo np. do napisania p...
To jest kolejny wpis na przyszły tydzień ;-), albo jeśli ktoś woli niech tydzień blogowania zaczyna się od niedzieli ;-). Teraz napiszę o InteliGUI, nowym pomyśle na zastosowanie sieci Hopfielda. W całym przedsięwzięciu chodzi o to, żeby uzyskać inteligentne GUI tzn. takie które będzie się uczyć sekwencji jakich używamy i samo będzie proponować co chcemy zrobić na podstawie kilku kroków. Oczywiście to rozwiązani jakie opiszę...
Polecamy
Ostatnio na blogu
Polacy nie gęsi i swój języ...
Najaktywniejsi



