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
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
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
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.
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):
Aplikacja musi również obsłużyć naciśnięty przycisk
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
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.