Jarosław Kuchta. Podstawy Programowania Obiektowego. ćwiczenie 10. Podstawy grafiki w WPF

Podobne dokumenty
Jarosław Kuchta Podstawy Programowania Obiektowego. Podstawy grafiki obiektowej

Utworzenie aplikacji mobilnej Po uruchomieniu Visual Studio pokazuje się ekran powitalny. Po lewej stronie odnośniki do otworzenia lub stworzenia

Adobe InDesign lab.1 Jacek Wiślicki, Paweł Kośla. Spis treści: 1 Podstawy pracy z aplikacją Układ strony... 2.

Programowanie obiektowe

Informatyka II. Laboratorium Aplikacja okienkowa

Przewodnik po obszarze roboczym

Ćw. I Projektowanie opakowań transportowych cz. 1 Ćwiczenia z Corel DRAW

Tworzenie prezentacji w MS PowerPoint

DODAJEMY TREŚĆ DO STRONY

1. Dockbar, CMS + wyszukiwarka aplikacji Dodawanie portletów Widok zawartości stron... 3

Ćwiczenie 3: Rysowanie obiektów w programie AutoCAD 2010

e-podręcznik dla seniora... i nie tylko.

- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy

Zadanie 3. Praca z tabelami

Przed rozpoczęciem pracy otwórz nowy plik (Ctrl +N) wykorzystując szablon acadiso.dwt

WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.

Kolory elementów. Kolory elementów

BAZA_1 Temat: Tworzenie i modyfikowanie formularzy.

narzędzie Linia. 2. W polu koloru kliknij kolor, którego chcesz użyć. 3. Aby coś narysować, przeciągnij wskaźnikiem w obszarze rysowania.

Kadry Optivum, Płace Optivum

Lokalizacja jest to położenie geograficzne zajmowane przez aparat. Miejsce, w którym zainstalowane jest to urządzenie.

I. Spis treści I. Spis treści... 2 II. Kreator szablonów Tworzenie szablonu Menu... 4 a. Opis ikon Dodanie nowego elementu...

Sekretariat Optivum. Jak przygotować listę uczniów zawierającą tylko wybrane dane, np. adresy ucznia i jego opiekunów? Projektowanie listy

Jak przygotować pokaz album w Logomocji

Politechnika Poznańska Wydział Budowy Maszyn i Zarządzania

Ćwiczenie 1: Pierwsze kroki

Celem ćwiczenia jest zapoznanie się z podstawowymi funkcjami i pojęciami związanymi ze środowiskiem AutoCAD 2012 w polskiej wersji językowej.

Ćwiczenie 1 Automatyczna animacja ruchu

Baltie - programowanie

Temat: Organizacja skoroszytów i arkuszy

Microsoft.NET: LINQ to SQL, ASP.NET AJAX

Nawigacja po długim dokumencie może być męcząca, dlatego warto poznać następujące skróty klawiszowe

Spis treści. Rozdział 2. Graficzna oprawa witryny...z Stosowanie motywu...s...s.. 19

Zadanie Wstaw wykres i dokonaj jego edycji dla poniższych danych. 8a 3,54 8b 5,25 8c 4,21 8d 4,85

Programowanie Obiektowe GUI

Konfiguracja szablonu i wystawienie pierwszej aukcji allegro

Sekretne menu Start. Przycisk pulpitu

Wstawianie nowej strony

Komputery I (2) Panel sterowania:

Arkusz strona zawierająca informacje. Dokumenty Excela są jakby skoroszytami podzielonymi na pojedyncze arkusze.

Oficyna Wydawnicza UNIMEX ebook z zabezpieczeniami DRM

Przewodnik... Tworzenie Landing Page

Ćwiczenia nr 2. Edycja tekstu (Microsoft Word)

Wstęp 7 Rozdział 1. OpenOffice.ux.pl Writer środowisko pracy 9

Tworzymy projekt File->New Project->Java Application, przy czym tym razem odznaczamy create main class

Compas 2026 Vision Instrukcja obsługi do wersji 1.07

1. Przypisy, indeks i spisy.

Platformy Programowania

Dodawanie grafiki i obiektów

Aplikacja projektu Program wycinki drzew i krzewów dla RZGW we Wrocławiu

Baltie. Programujemy historyjki

Instrukcja obsługi funkcji specjalnych szablonu C01 v.1.0

Dodanie nowej formy do projektu polega na:

Formatowanie tekstu za pomocą zdefiniowanych stylów. Włączanie okna stylów. 1. zaznaczyć tekst, który chcemy formatować

e-podręcznik dla seniora... i nie tylko.

Laboratorium 8 ( Android -pierwsza aplikacja)

Cel: Przypisujemy przyciskom określone funkcje panel górny (Panel1)

1. Umieść kursor w miejscu, w którym ma być wprowadzony ozdobny napis. 2. Na karcie Wstawianie w grupie Tekst kliknij przycisk WordArt.

Uruchamianie programu

Cykl lekcji informatyki w klasie IV szkoły podstawowej. Wstęp

Opis implementacji: Poznanie zasad tworzenia programów komputerowych za pomocą instrukcji języka programowania.

Programowanie w środowisku graficznym GUI

Arkusz kalkulacyjny MS Excel 2010 PL.

VBA w Excel Lekcja ta ma przybliżyć pojęcia związane z programowaniem w pakiecie Office. Poniższe przykłady związane są z wersją Office2007.

Edytor tekstu MS Word 2010 PL: grafika. Edytor tekstu MS Word umożliwia wstawianie do dokumentów grafiki.

Obsługa mapy przy użyciu narzędzi nawigacji

W kolejnym odcinku zajmiemy się umieszczaniem w naszym projekcie zestawu ikon służących szybkiemu korzystaniu z opcji programu.

Modelowanie obiektowe - Ćw. 1.

Obsługa programu Paint. mgr Katarzyna Paliwoda

I. Menu oparte o listę

Makra Access 2003 wg WSiP Wyszukiwanie, selekcjonowanie i gromadzenie informacji Ewa Mirecka

Układy witryn internetowych

Rys.1. Technika zestawiania części za pomocą polecenia WSTAWIAJĄCE (insert)

Zadanie 1. Stosowanie stylów

Podręczna pomoc Microsoft Power Point 2007

5. Kliknij teraz na ten prostokąt. Powinieneś w jego miejsce otrzymać napis. Jednocześnie została wywołana kolejna pozycja menu.

etrader Pekao Podręcznik użytkownika Strumieniowanie Excel

GENERATOR OFERTY PDF DOKUMENTACJA UŻYTKOWA 1/20

Grażyna Koba. Grafika komputerowa. materiały dodatkowe do podręcznika. Informatyka dla gimnazjum

Laboratorium z Grafiki InŜynierskiej CAD. Rozpoczęcie pracy z AutoCAD-em. Uruchomienie programu

xmlns:prism= c. <ContentControl prism:regionmanager.regionname="mainregion" />

Programowanie obiektowe i zdarzeniowe wykład 1 Wprowadzenie do programowania zdarzeniowego

Baltie 3. Podręcznik do nauki programowania dla klas I III gimnazjum. Tadeusz Sołtys, Bohumír Soukup

Laboratorium - Monitorowanie i zarządzanie zasobami systemu Windows 7

dla gastronomii i hoteli S4H W PRAKTYCE DOPASUJ NASZE PROGRAMY DO POTRZEB TWOJEJ FIRMY S4H POS MODYFIKACJE EKRANU BONOWANIA

Ms WORD Poziom podstawowy Materiały szkoleniowe

Przewodnik Szybki start

Rozdział 2. Konfiguracja środowiska pracy uŝytkownika

Zadanie 10. Stosowanie dokumentu głównego do organizowania dużych projektów

Podstawy technologii WWW

Dokument zawiera podstawowe informacje o użytkowaniu komputera oraz korzystaniu z Internetu.

wstawianie przycisków umożliwiających wybieranie wartości poprzez klikanie strzałek

Zadanie 9. Projektowanie stron dokumentu

Podstawy programowania. Ćwiczenie. Pojęcia bazowe. Języki programowania. Środowisko programowania Visual Studio

BAZY DANYCH Panel sterujący

Tworzenie zaproszenia

Rozwiązanie ćwiczenia 8a

Politechnika Gdańska Katedra Optoelektroniki i Systemów Elektronicznych

Transkrypt:

Jarosław Kuchta Podstawy Programowania Obiektowego ćwiczenie 10 Podstawy grafiki w WPF

Wprowadzenie W tym ćwiczeniu rozpoczniemy tworzenie gry Wall Demolition. Jest to odmiana gry Blockout. W grze występuje konstrukcja przypominająca mur złożony z kartonów przypominających cegły oraz poruszająca się piłka. Gracz odbija piłkę za pomocą paletki w stronę muru. Piłka uderzając o mur wybija cegły. Jedno uderzenie powoduje przesunięcie cegły o 1/5 jej szerokości. Kilka uderzeń spowoduje wysunięcie cegły z muru i zawalenie się całej konstrukcji muru powyżej wybitej cegły, co powoduje koniec gry. Gracz zdobywa tyle punktów, ile cegieł udało mu się zwalić. Oczywiście w trakcie tego ćwiczenia nie stworzymy całej gry. Zadanie będziemy kontynuować na następnych ćwiczeniach. Zadanie 1. Tworzenie rozwiązania, okno edycji Do rozwiązania użyjemy środowiska WPF. Aby stworzyć rozwiązanie wydaj polecenie Nowy projekt i wybierz szablon WPF Application. W rozwiązaniu pojawi ci się projekt zawierający cztery elementy: 2

Element Properties zawiera właściwości projektu. Nie będziemy jego otwierać. Element References zawiera odwołania do bibliotek i innych projektów. Na razie również nie będziemy jego otwierać. Element App.xaml zawiera główne ustawienia aplikacji. Zazwyczaj nie ma potrzeby jego otwierać. Element MainWindow.xaml jest interesującym nas głównym oknem aplikacji. Biały trójkąt z lewej strony tego elementu pokazuje, że ma on elementy podrzędne. Kliknij ten trójkąt, a rozwinie ci się gałąź pokazująca te elementy. Jak widać główne okno składa się z dwóch plików: pliku MainWindow.xaml definiującego stronę wizualną okna, pliku MainWindow.xaml.cs zawierającego kod sterujący okna. Taki układ nazywa się programowaniem code behind. Strona wizualna jest definiowana w tym przypadku w standardzie XAML. Programista ma możliwość skorzystania z licznych narzędzi ułatwiających graficzne zaprojektowanie strony. Ma też możliwość edycji kodu XAML ręcznie, za pomocą edytora tekstowego. Jeśli spojrzymy na plik MainWindow.xaml w edytorze, to zobaczymy okno edycji podzielone na dwie części. 3

W części górnej okna pokazana jest strona w postaci wizualnej takiej, jak będzie prezentowana dla użytkownika. W części dolnej ta sama strona w postaci tekstowej takiej, jak jest zapisana w pliku XAML. Przyjrzyjmy się środkowemu paskowi oddzielającemu dwie części okna. Pociągając pasek w górę i w dół zmieniamy podział okna tak, że możemy się skupić na edycji wizualnej albo na edycji tekstowej. Kliknięcie na jedną z dwóch zakładek (Design lub XAML) na pasku powoduje przejście do części projektowania wizualnego lub tekstowego. Zresztą wystarczy tylko kliknąć na wybraną część okna, aby zmienić sposób projektowania. Kliknięcie na przycisk [ ] pomiędzy zakładkami powoduje zamianę dwóch części okna miejscami. 4

Spójrzmy jeszcze na grupę trzech przycisków z prawej strony paska podziału. Przycisk lewy [ ] i środkowy [ ] powodują zmianę podziału okna na pionowy i poziomy. Przycisk prawy [ ] (lub dolny [ ]w układzie pionowym) powoduje schowanie dolnej (lub prawej) części okna i umożliwia edycję na całym obszarze okna pozostałej części. 5

Jeśli chcemy pomniejszyć lub powiększyć obraz strony wyświetlany w części edycji wizualnej, to wystarczy pociągnąć w dół lub w górę suwak powiększenia wyświetlany z boku. Część edycji tekstowej też można skalować przez kombo wyświetlane na dole tej części. Utworzenie rozwiązania, zapoznanie się z konfiguracją okna edycji i uruchomienie pustej aplikacji jest wystarczające do zaliczenia tego zadania. 6

Zadanie 2. Projektowanie wizualne, właściwości kontrolek Projektowanie wizualne polega na przeciąganiu kontrolek z toolboxa (pudełka z narzędziami) na powierzchnię projektowanego okna i manipulowaniu nimi (przeciąganiu, powiększaniu i pomniejszaniu). Toolbox jest panelem wyświetlanym z reguły z lewej strony Visual Studio. Korzystnie jest wyświetlać go na zakładkę z Solution Expolorerem. W toolboxie wyświetlana jest lista dostępnych kontrolek. Znajdują się wśród nich: TextBox kontrolka do wprowadzania i edycji tekstu, TextBlock kontrolka do wyświetlania tekstu bez edycji, Button przycisk umożliwiający wydanie polecenia, CheckBox kratka wyboru, Label tekst do oznaczania innych kontrolek. Przeciągnięcie kontrolki z listy na obszar edycji powoduje jej wyświetlenie na formularzu w postaci wizualnej i jednocześnie w postaci tekstowej w pliku XAML. Dla naszej gry będziemy potrzebowali kontrolki o nazwie Canvas (płótno). Przeciągnij tę kontrolkę na formularz. Jest ona wyświetlana jako prostokąt w części wizualnej, a w części tekstowej jako znacznik <Canvas />. W znaczniku <Canvas /> wyświetlane są właściwości kontrolki. Są one następujące: Height="100" szerokość kontrolki liczona w pikselach HorizontalAlignment="Left" wyrównanie poziome kontrolki przy zmianie rozmiaru elementu nadrzędnego (w tym wypadku odległość od lewej strony formularza pozostaje bez zmian) 7

Margin="64,79,0,0" marginesy liczone w pikselach kolejno od strony lewej, górnej, prawej i dolnej (w tym wypadku od strony prawej i dolnej jest nieistotne, bo wyrównanie poziome jest do strony lewej, a pionowe jest do strony górnej) Name="canvas1" nazwa kontrolki VerticalAlignment="Top" wyrównanie pionowe kontrolki przy zmianie rozmiaru elementu nadrzędnego (w tym wypadku odległość od górnej strony formularza pozostaje bez zmian) Width="200" szerokość kontrolki liczona w pikselach Uchwyć za brzeg tej kontrolki i pociągnij w do brzegu formularza. Zobacz, jak w postaci tekstowej zmieniają się niektóre właściwości kontrolki. Jeśli nie widzisz wszystkich właściwości w oknie tekstowym, to możesz je podzielić (przez edycję tekstu) na kilka linii. Domyślnie właściwości są wyświetlane w kolejności alfabetycznej, ale możesz przenieść np. nazwę kontrolki na pierwszą pozycję. 8

Właściwości kontrolki możesz też zmienić w panelu właściwości (Properties). W tym celu otwórz menu kontekstowe kontrolki (klikając ją prawym klawiszem myszy) i wybierz opcję Properties. Otworzy się panel właściwości (najczęściej z prawej strony Visual Studio. Panel Properties oferuje trzy widoki właściwości: widok z podziałem na kategorie, widok listy alfabetycznej, widok wg źródła właściwości. Widoki te są przełączane przez trzy przyciski tuż pod zakładką Properties. W tym ćwiczeniu będziesz używać tylko dwóch pierwszych widoków. 9

para znaczników kontrolki para znaczników właściwości para znaczników obiektu Wybierz właściwość Background (tło). Kliknij przycisk rozwijający z prawej strony i ustaw tło gradientowe w odcieniu błękitnym. Zobacz, jak w oknie tekstowym została wpisana właściwość tła. Zauważ, że znak / na końcu znacznika <Canvas /> został usunięty a dodany został znacznik zamykający </Canvas>. Właściwość tła została dodana pomiędzy znacznikiem otwierającym <Canvas > a znacznikiem zamykającym </Canvas>. Zauważ, że niektóre właściwości są reprezentowane przez atrybuty, a inne przez elementy. atrybuty - właściwości elementy - właściwości Zadanie 3. Wyrównywanie kontrolki Uruchom program i zmieniaj rozmiar okna. Zauważ, że rozmiar kontrolki Canvas pozostaje stały. Możesz sprawić, że jej rozmiar będzie się zmieniał wraz ze zmianą rozmiaru okna. W tym celu przejdź do edycji tekstu XAML i: zmień właściwości HorizontalAlignment i VerticalAlignment na Stretch, usuń właściwości Height i Width, zmień właściwość Margin na 12 (równy ze wszystkich stron). Zauważ, że znak > kończący znacznik otwierający musi pozostać. Również cała pozostała część deklaracji pozostaje bez zmian. Teraz uruchom program i zauważ, że rozmiar płótna się zmienia wraz ze zmianą wielkości okna. 10

Zauważ też w panelu właściwości że usunięte z pliku XAML właściwości Height i Width mają teraz wartość auto. Jest to wartość domyślna, która jest przypisywana wówczas, gdy brak jest definicji właściwości w pliku XAML. To że jest to wartość domyślna jest pokazywane w postaci szarego prostokąta po lewej stronie wartości. Zauważ, że przy właściwości Background jest wyświetlany ciemny romb. Zamiast usuwać ręcznie właściwość z okna edycji tekstowej możesz po prostu kliknąć romb, rozwinąć menu kontekstowe i wybrać opcję Reset. Zadanie 4. Rysowanie kształtów na płótnie Przeciągnij elipsę z toolboxa na płótno. Jeśli chcesz, aby to było koło, to musisz się upewnić, że właściwości szerokości (Width) i wysokości (Height) są równe. 11

Teraz ustal właściwości wypełnienia (Fill) i rysowania (Stroke) tak, aby koło zaczęło przypominać piłkę. Wskazówki: Użyj wypełnienia gradientowego jasnego w środku i ciemnego na zewnątrz. Użyj jednego z predefiniowanych kolorów wybieranych z listy. Zmieńmy nazwę obiektu ellipse1 na piłka. Przyda się to nam do zrozumienia operacji w kodzie. Można to zrobić przez edycję kodu XAML Zmieńmy też nazwę obiektu canvas1 na płótno. Zadanie 5. Programowanie code behind Nie zawsze przedstawiony w poprzednim zadaniu sposób rysowania ma zastosowanie. Jeśli chcemy narysować mur składający się z wielu cegieł, to zamiast precyzyjnie umieszczać jedną cegłę nad drugą lepiej jest utworzyć pojedynczą cegłę i napisać powielającą ją wielokrotnie. Najpierw więc utwórzmy kształt cegły na płótnie korzystając z doświadczeń poprzedniego zadania. Będzie to kształt prostokątny (Rectangle), umieszczony na dole płótna. Narysujmy to w pobliżu lewej krawędzi płótna, ale nie zbyt blisko, bo powinniśmy pamiętać, że cegły będą się wysuwać. Kształt ten nazwiemy cegła0, bo będzie służył jako podstawa dla całego muru. 12

Teraz przejdźmy do edycji kodu okna. W edytorze klikniemy zakładkę MainWindow.xaml.cs i zobaczymy szkielet kodu klasy okna. Klasa MainWindow jest oznaczona słowem kluczowym partial. Oznacza to, że jest zdefiniowana częściowo w kodzie, a częściowo w pliku XAML. W kodzie można się odwoływać do elementów zdefiniowanych w XAML i vice versa. 13

Procedura publiczna o nazwie takiej samej jak nazwa klasy (MainWindow) jest konstruktorem klasy. Jest ona wywoływana zawsze przy utworzeniu nowej instancji klasy. Na razie zostawimy ją w spokoju. Utwórzmy w kodzie procedurę, która powieli zdefiniowaną w XAML-u cegłę. Umieśćmy ją za konstruktorem (za nawiasem klamrowym zamykającym konstruktor, ale przed nawiasem klamrowym zamykającym klasę). Nazwijmy ją np. BudujMur. Pamiętajmy, że w C# procedura jest to funkcja typu void. Pierwszym działaniem, które zrobimy, to będzie ustawienie cegły podstawowej (cegła0) dokładnie na dole płótna. Pamiętajmy o tym, że rozmiar płótna może się zmienić, a cegła jest zawsze rysowana w pozycji określonej przez właściwości Left i Top względem lewego i górnego brzegu płótna. Sprawdź, czy tak jest rzeczywiście. Uruchom program i zmieniaj rozmiar okna. Tak więc trzeba ustalić położenie górnego brzegu cegły podstawowej w zależności od wysokości płótna i tej cegły. Normalnie można by napisać: Problem jednak polega na tym, że klasa Rectangle nie ma zdefiniowanej właściwości Top! W XAML-u deklarowaliśmy właściwości Top i Left przez klasę Canvas. W kodzie możemy to zrobić przez metody statyczne SetTop i SetLeft tej klasy, gdzie pierwszym parametrem tych metod jest referencja do dowolnego elementu WPF. Zatem piszemy: Jednak po uruchomieniu programu nie widzimy żadnej różnicy. Sprawdź! Dzieje się tak dlatego, że procedura BudujMur nie jest przypisana do żadnego zdarzenia. Utwórzmy na płótnie przycisk (Button), którego naciśnięcie myszą spowoduje wywołanie procedury. Aby to zrobić, przeciągnij z toolboxa kontrolkę o nazwie Button na płótno i umieść ją w pobliżu górnego lewego rogu płótna. Nazwijmy przycisk NewGameButton, ponieważ jego zadaniem będzie tworzenie nowej gry. Ustalmy właściwość Content tej kontrolki na Nowa gra. Właściwość Content reprezentuje napis wyświetlany wewnątrz przycisku. 14

Teraz utworzymy procedurę obsługi zdarzenia Click dodanego przycisku. Przejdź do panelu właściwości i otwórz zakładkę zdarzeń (Events). Wybierz zdarzenie Click. Kliknij dwukrotnie na puste pole wartości obok nazwy zdarzenia. Zostanie utworzona procedura NewGameButton_Click a jej referencja zostanie przypisana do przycisku. Ty tego przypisania nawet nie zauważysz, bo Visual Studio przełączy się od razu na edycję kodu. Zauważysz jednak szkielet procedury w kodzie. 15

Wpisz wywołanie procedury BudujMur do metody NewGameButton_Click. Uruchom program i zobacz, jak reaguje on na naciśnięcie przycisku Nowa gra. Zauważ, że cegła jest przemieszczana do górnej krawędzi płótna, zamiast do dolnej. Dzieje się tak dlatego, że wysokość i szerokość płótna jest w naszym programie dopasowywana do wysokości i szerokości okna. Dlatego właściwości Height i Width są ustawione na wartość domyślną NaN (Not-A-Number). Jak się wczytamy w dokumentację WPF, to zorientujemy się, że oprócz właściwości Width i Height reprezentujących szerokość i wysokość zaprojektowaną przez programistę, elementy WPF mają też właściwości ActualWidth i ActualHeight, reprezentujące aktualną szerokość i wysokość określoną przez inne elementy. Dlatego w kodzie procedury BudujMur zmienimy dla obiektu płótno odwołanie do właściwości Height na odwołanie do właściwości ActualHeight. Zobacz, jak teraz program reaguje na naciśnięcie przycisku Nowa gra. Dosuwa cegłę podstawową do dołu płótna? Jeśli tak, to możemy kontynuować budowanie muru. Ale to już zadanie na kolejne ćwiczenie 16