Laboratorium Programowanie urządzeń mobilnych Wprowadzenie Klasa Transform - Umożliwia realizację różnych zmian obiektu. Obiekt może zostać przesunięty, może być zmieniony jego rozmiar lub obrócony. Klasa Transform jest abstrakcyjna i jest rodzicem siedmiu nie abstrakcyjnych klas: TranslateTransform - przesuniecie obiektu ScaleTransform zmiana rozmiaru obiektu RotateTransform obrót wokół punktu SkewTransform przesunięcie w ramach jednego wymiaru MatrixTransform zmiany obiektu przy wykorzystaniu macierzy TransformGroup połączenie wielu zmian CompositeTransform seria zmian w ustalonym porządku Przykładowe wykorzystanie Transform poprzez RenderTransform:
Zmiana punktu odniesienia skalowania Właściwości CenterX i CenterY tworzą tzw. punkt relative coordinates (punkt odniesienia skalowania), TextBlock posiada właściwość RenderTransformOrigin, jest to właśnie punkt relative coordinates. Właściwość ta może przyjmować np. takie wartości : (0, 0) - lewy górny róg (1, 1) - prawy dolny róg (0.5, 0.5) - środek Klasa TranslateTransform Może np. być wykorzystana do tworzenia tzw. cieni :
Klasa CompositeTransform - umożliwia zastosować wiele różnych przekształceń obiektu. Przykład: Zegar Zostanie wykorzystana klasa DispatcherTimer, z biblioteki System.Windows.Threading. CompositeTransform domyślnie przyjmuje wartości z RenderTransform
Wykorzystano zdarzenie SizeChanged do określenia środka ContenPanel oraz rozmiaru TextBlock - referencetext
Timer, który jest zsynchronizowany z częstotliwością odświeżania obrazu jest bardzo istotny dla animacja. Sliverlight dostarcza takie narzędzie, jest to zdarzenia CompositionTarget.Rendering. Obsługa tego zdarzenia jest następująca: CompositionTarget jest statyczną klasa, która ma jeden publiczny element - zdarzenie Rendering. Instalacja tego zdarzenia jest następująca: Odinstalowanie : Zdarzenie ManipulationDelta Zdarzenie ManipulationDelta jest kluczowe dla dotyków jednego lub więcej palców, skalowania i konsolidowania informacji. ManipulationDeltaEventArgs ma dwie właściwości: CumulativeManipulation i DeltaManipulation, które z kolei mają właściwości o nazwach Translation i Scale. DeltaManipulation w zastosowaniu jest często łatwiejsze niż CumulativeManipulation. Jeżeli tylko jeden palec jest wykorzystywany, to tylko właściwość Translation jest istotna i może być tylko dodana do TranslateX i TranslateY z właściwości CompositeTransform. Jeśli dwa palce dotykają ekranu, właściwość Scale ma wartości niezerowe.
Przykład przemieszczanie piłki Fragment pliku MainPage.xaml.cs
Zmiana położenia obrazu Wykorzystanie klasy RanderTransform. Odtwarzanie filmów Jest tak łatwe, jak wyświetlanie plików graficznych Jednak z powodu wielkości plików wideo, przeważnie pliki te są odtwarzane z internetu Wykorzystana jest klasa MediaElement
Klasa Canvas (Panel) Posiada dwie bardzo ważne cechy: Obiekty, dzieci tej klasy są zawsze wyświetlane w najmniejszych rozmiarach, Metoda MeasureOverride z klasy Canvas zwraca szerokość i wysokość równą zero - co znaczy, że Canvas nie tworzy żadnego śladu własnego w układzie Silverlight Pozycjonowanie elementy wewnątrz Canvas odbywa się poprzez podanie poziomych i pionowych współrzędnych względem lewego górnego rogu. Przykład
ApplicationBar Do potrzeb programowaniu aplikacji pod Windows Phone 7 został opracowany spójny interfejs dla użytkowników telefonów komórkowych. Jest to ApplicationBar i powszechnie nazywany paskiem aplikacji. ApplicationBar pełni tę samą rolę jak menu lub pasek narzędzi w konwencjonalnych programach Windows. Nie ma konwencjonalne menu lub pasek narzędzi w Silverlight ApplicationBar (ApplicationBarIconButton i ApplicationBarMenuItem) są zdefiniowane w przestrzeni nazw Microsoft.Phone.Shell. Gdy telefon jest w pozycji wyprostowanej, ApplicationBar zawsze pojawia się na dole strony. ApplicationBar może zawierać do czterech przycisków. (czasami określane jako ikony) ApplicationBar to zawsze wyświetlać obrazy, zazwyczaj pliki PNG ApplicationBar nie jest częścią standardowego Silverlight, deklaracja przestrzeni nazw musi być skojarzona z XML shell Zmiana aktywności przycisków Przycisk można włączyć w kodzie programu za pomocą następującej konstrukcji (załączenie trzeciego przycisku): Wyłączenie drugiego przycisku
Aplikacja musi również obsłużyć naciśnięty przycisk Przykład ApplicationBar
Zadnia do realizacji. Aplikacja 1. Proszę napisać aplikację, która wyświetla tekst obrócony o 45 stopni i wykorzystuje również element typu Border. Przykładowy końcowy efekt działania jest pokazany poniżej. Aplikacja 2. Proszę napisać aplikację, w której tekst ROTATE jest obracany i wykorzystana jest obsługa zdarzenia Rendering Fragment pliku MainPage.xaml,
Aplikacja 3. Proszę utworzyć aplikację, która wykorzystuje klasę Canvas, a końcowy efekt działania jest pokazany poniżej. Aplikacja 4. Proszę utworzyć aplikację, która zawiera ApplicationBar, można wykorzystać kod, który jest podany w części teoretycznej i dopisać obsługę poszczególnych przycisków. W sprawozdaniu powinien być umieszczony dokładny opis działania poszczególnych elementów aplikacji.