Wielowątkowość Klasyczny program sekwencja rozkazów działająca na wyodrębnionym obszarze pamięci. Proces program wykonujący się w ramach jednej przest

Podobne dokumenty
Tworzenie grafiki GDI

Wizualne systemy programowania. Wykład 11 Grafika. dr Artur Bartoszewski -Wizualne systemy programowania, sem. III- WYKŁAD

całkowicie obsługuje GDI dla kompatybilności z istniejącymi aplikacjami optymalizacja wielu cech GDI rozszerzenie o nowe możliwości

Szybkie tworzenie grafiki w GcIde

Microsoft Visual C : praktyczne przykłady / Mariusz Owczarek. Gliwice, cop Spis treści

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.

Programowanie na poziomie sprzętu. Programowanie w Windows API

Podstawy Swing. Tomasz Borzyszkowski

Programowanie obiektowe

Projektowanie graficzne. Wykład 2. Open Office Draw

Animacje z zastosowaniem suwaka i przycisku

Java Podstawy. Michał Bereta

Język JAVA podstawy. wykład 2, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Jarosław Kuchta Podstawy Programowania Obiektowego. Podstawy grafiki obiektowej

Podstawy tworzenia aplikacji z wykorzystaniem języka Java ME ćwiczenia 2

Java: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Ustalanie dostępu do plików - Windows XP Home/Professional

Ćwiczenie Nr 6 Przegląd pozostałych najważniejszych mechanizmów systemu operacyjnego Windows

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

Obsługa programu Paint. mgr Katarzyna Paliwoda

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

Dziedziczenie. Zadanie 1

PAMIĘĆ OPERACYJNA...107

Spis treści. Księgarnia PWN: Roland Zimek - Swish Max3

Spis treści. Księgarnia PWN: Roland Zimek - SWiSH Max2 i SWiSH Max3. Wprowadzenie... 9

Microsoft Small Basic

Maskowanie i selekcja

Tworzenie prostych obrazów wektorowych w programie CorelDRAW 12

Ćwiczenia z systemu operacyjnego WINDOWS

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

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

Programowanie obiektowe

ROZSZERZANIE MOŻLIWOŚCI...

Przykładowa dostępna aplikacja w Visual Studio - krok po kroku

Instrukcja laboratoryjna cz.3

Budowa aplikacji z graficznym interfejsem użytkownika - GUI (Graphic User Interface)

Moduł Handlowo-Magazynowy Przeprowadzanie inwentaryzacji z użyciem kolektorów danych

Wprowadzenie do projektu QualitySpy

Instrukcja instalacji i obsługi systemu AR4vision (wersja 1.0.0)

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

I. Interfejs użytkownika.

Formularze w programie Word

PWI Instrukcja użytkownika

TEMAT : KLASY DZIEDZICZENIE

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

Instrukcja połączenia z programem Compas LAN i import konfiguracji

Galileo v10 pierwszy program

Włączanie/wyłączanie paska menu

Obsługa programu Paint materiały szkoleniowe

Kurs Adobe Photoshop Elements 11

Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego

Dodawanie grafiki i obiektów

Komputery I (2) Panel sterowania:

Ćwiczenie 6 Animacja trójwymiarowa

CorelDRAW. 1. Rysunek rastrowy a wektorowy. 2. Opis okna programu

Dodanie nowej formy do projektu polega na:

SPIS TREŚCI: KARTY GRAFICZNE... 15

Microsoft Visual C++

Rozdział 1. Wstęp 5. Rozdział 2. Pierwsze kroki 13. Rozdział 3. Podstawy rysunku wektorowego 35

Pierwsze kroki z easy Soft CoDeSys Eaton Corporation. All rights reserved.

Podstawowe elementy GUI cz. 2 i 3 - zadania

Systemy operacyjne I Laboratorium Część 3: Windows XP

Programowanie obiektowe

Instrukcja użytkownika systemu medycznego

Kompleksowe tworzenie aplikacji klasy Desktop z wykorzystaniem SWT i

Delphi podstawy programowania. Środowisko Delphi

16) Wprowadzenie do raportowania Rave

1. Przypisy, indeks i spisy.

Szanowni Państwo. Należy przy tym pamiętać, że zmiana stawek VAT obejmie dwie czynności:

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

Edytor tekstu OpenOffice Writer Podstawy

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

Przewodnik użytkownika (instrukcja) AutoMagicTest

Tworzenie prezentacji w MS PowerPoint

GRAFIKA WEKTOROWA. WYKŁAD 1 Wprowadzenie do grafiki wektorowej. Jacek Wiślicki Katedra Informatyki Stosowanej

Instrukcja użytkownika. Aplikacja dla Comarch ERP XL

Opis szybkiego uruchomienia programu APBSoft

Informatyka Edytor tekstów Word 2010 dla WINDOWS cz.3

Ćwiczenie 2 Warstwy i kształty podstawowe

Instrukcja użytkownika. Aplikacja dla Comarch Optima

Notepad++ / PuTTY. Interaktywne środowisko programowania w języku ForthLogic. Wersja dokumentu P.1. Wersja dokumentu NP1.

ECDL/ICDL Przetwarzanie tekstów Moduł B3 Sylabus - wersja 5.0

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1

Kolory elementów. Kolory elementów

Kancelaria Prawna.WEB - POMOC

Modelowanie obiektowe - Ćw. 1.

PODRĘCZNIK UŻYTKOWNIKA PRACOWNIK SPZOZ

WAŻNE! colour.me Google Fonts tutaj

Część II Wyświetlanie obrazów

Wielowątkowość mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

Instrukcja użytkownika. Aplikacja dla WF-Mag

Programowanie współbieżne i rozproszone

Obsługa grafiki w Delphi, rysowanie na płótnie, obsługa myszki, zapisywanie obrazków do plików, bitmapy pozaekranowe.

Informatyka Edytor tekstów Word 2010 dla WINDOWS cz.3

Programowanie obiektowe zastosowanie języka Java SE

Kontrola topto. 1. Informacje ogólne. 2. Wymagania sprzętowe i programowe aplikacji. 3. Przykładowa instalacja topto. 4. Komunikacja.

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

UNIFON podręcznik użytkownika

Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1

Transkrypt:

Wątki Do zarządzania wątkami należy dodać odwołanie na przestrzeń nazw System.Threading Wątki pozwalają na równoległe działanie kilku procesów, które mogą być niezależne Od wersji 2005 można korzystać ze specjalnego komponentu BackgroundWorker

Wielowątkowość Klasyczny program sekwencja rozkazów działająca na wyodrębnionym obszarze pamięci. Proces program wykonujący się w ramach jednej przestrzeni adresowej. Wątek sekwencja kodu będąca częścią procesu i mogąca współdzielić zasoby (pamięć) z innymi wątkami tego procesu.

Kiedy używać? Systemy wieloprocesorowe (Core2 Duo, Core2 Quadro, Pentium 4 DC). Obsługa wolnych urządzeń dyski, drukarki, sieć, Obsługa interfejsu GUI w czasie żmudnych obliczeń. Systemy rozproszone.

Wątek

Wątek Wątki uruchamiane są poprzez mechanizm delegacji. Punktem startowym wątku musi być metoda typu void nie posiadająca argumentów. Wątek zaczyna się wykonywać po wywołaniu metody Start(). Wątek kończy swój cykl życiowy po wyjściu z głównej metody (delegacji).

Współdzielenie danych Wątki pracują we wspólnej przestrzeni adresowej. Mogą współdzielić elementy (pola) statyczne klas. Teoretycznie w C# nawet procesy mogą współdzielić pamięć. Problem zapewnienia synchronizacji dostępu do zmiennych (pól).

Blokowanie Wątek może zablokować dostęp do obiektu na czas jego aktualizacji. Służy do tego instrukcja lock.

Blokowanie Blokowanie elementów statycznych wymaga zablokowania typu (klasy).

Monitorowanie stanu Wątek może oczekiwać w uśpieniu na zmianę jakiegoś elementu, np. pola. Służy do tego klasa Monitor, a w szczególności jej metody: Wait() wątek oczekuje na uaktywnienie, Pulse() uruchamia co najmniej jeden z wątków o ile czekają, PulseAll() uruchamia wszystkie czekające wątki.

Monitorowanie stanu

Przerywanie wątków Klasa Thread ma metodę Interrupt() powodującą zatrzymanie wykonywanie wątku. Wywołanie tej metody powoduje zgłoszenie wyjątku.

Problemy z blokadami Blokady w C# są sekwencyjne platforma pamięta kolejność blokad co zmniejsza prawdopodobieństwo dead-lock u. Więcej o wątkach: http://research.microsoft.com/~birrell/papers/ ThreadsCSharp.pdf

Backgroundworker Nowy komponent od VS 2005 ułatwiający programowanie wielowątkowe Właściwości Zdarzenia

Przykładowe metody

Tworzenie grafiki GDI

GDI Graphical Device Interface standard API Windows przeznaczony do reprezentowania obiektów graficznych i przesyłania ich do urządzeń wyjściowych jak monitory lub drukarki. Istnieje praktycznie od początku Windows.

GDI Program dla Windows nie komunikuje się bezpośrednio z urządzeniami wyjściowymi, np. kartą graficzną. Program korzysta z API, które umożliwia tworzenie wyjścia i przesłanie go do dowolnego urządzenia lub strumienia (pamięć, plik). Windows, poprzez sterowniki, generuje obraz na urządzeniu zewnętrznym.

GDI+ W Windows XP i Windows 2003 Server zaimplementowano nową wersję GDI. Jest instalowana jako dodatek do starszych wersji Windows (>95). Więcej funkcji i rodzajów obiektów graficznych. API jest zorientowane obiektowo.

GDI+ Trzy podstawowe elementy GDI+ to: Grafika wektorowa 2D, Grafika rastrowa przetwarzanie obrazów, Typografia.

GDI+ i.net Wszystkie klasy związane z API GDI+ są obudowane klasami znajdującymi się w przestrzeni nazw: System.Drawing W szczególności: System.Drawing.Drawing2D, System.Drawing.Imaging, System.Drawing.Text.

GDI+ i.net Rysowanie zawsze odbywa się za pomocą obiektu klasy Graphics. Każdy widoczny komponent ma skojarzony ze sobą taki obiekt. Na potrzeby rysowanie obiekt można uzyskać korzystając z metody CreateGraphics. Można go też otrzymać poprzez obsługę zdarzenia Paint.

Obiekt Graphics Należy zwracać uwagę, dla jakiego obiektu uzyskaliśmy obiekt Graphics!

Struktura Color. Kolory Stałe dla 128 kolorów, np. Color.Green. Możliwość zdefiniowania dowolnego koloru ze składowych (A), R, G, B: Metody GetHue, GetSaturation, GetBrightness konwertujące kolor do przestrzeni HSB. Typ wyliczeniowy KnownColor zawierający też kolory systemowe, np. KnownColor.ActiveBorder

Kolory predefiniowane

Kolory systemowe

Linie i wypełnienia Do rysowania linii służy obiekt klasy Pen. Najważniejsze właściwości klasy Pen: grubość, kolor. Do rysowania wypełnień, np. figur, służy obiekt klasy Brush. Klasa Brush jest abstrakcyjna!!! Klasa Pen może korzystać z klasy Brush.

Pióra Pióro może mieć ustawione różne zakończenia linii poprzez właściwości StartCap i EndCap o wartościach z typu wyliczeniowego LineCap.

Pióra Pióro może też mieć zdefiniowany styl linii we właściwości DashStyle z typu DashStyle.

Pióra własne Pióro może mieć zdefiniowany w postaci tablicy kształt.

Linie i wypełnienia Można korzystać z listy predefiniowanych piór o grubości 1, np. Pens.Blue. Podobnie jest dla klasy Brush, np. Brushes.Chocolate. Specjalizacje klasy Brush: SolidBrush równy kolor, HatchBrush wzorek, LinearGradientBrush pędzel gradientowy, PathGradientBrush pędzel gradientowy dla ścieżek, TextureBrush pędzel teksturowy

Pędzle typu Hatch

Pędzel typu Hatch

Pędzle teksturowe

Jednostki Domyślną jednostką w trakcie rysowania są piksele. Można zmienić jednostkę na: Display 1/75 cala, Document 1/300 cala, Inch cal, Milimeter, Pixel, Point 1/72 cala, World podobne do piksela, lepiej nie używać.

DrawArc DrawBezier DrawBeziers DrawClosedCurve* DrawCurve DrawEllipse* DrawIcon DrawImage Rysowanie Klasa Graphics ma dwa rodzaje metod służących do rysowania: metody typu Draw i Fill. DrawLine DrawPath* DrawPie* DrawPolygon* DrawRectangle* DrawRectangles* DrawString FillRegion *mają odpowiedniki typu Fill

Kolory

Jednostki cd.

Punkty, rozmiary, prostokąty Punkt na płaszczyźnie jest reprezentowany przez klasy: Point (składowe X i Y), PointF (liczby zmiennoprzecinkowe). Rozmiary podobnie: Size (składowe Width i Height), SizeF. I prostokąty Rectangle, RectangleF.

Prostokąty Prostokąty są często używane do wyznaczania różnych figur, np. elips i okręgów. Zawierają metody przydatne przy sprawdzaniu zawierania w obszarze lub nakładania obszarów: Contains(), Intersect(), IntersectWith() I przekształcaniu: Inflate(), Offset().

Rysowanie Należy pamiętać, że większość metod służących do rysowania jest przeciążonych, tak aby np. mogły korzystać z różnych sposobów podawanie rozmiarów.

Czcionki i tekst Podstawową klasą jest klasa Font reprezentująca czcionkę. Klasa FontFamily odpowiada rodzinie czcionek określonej przez nazwę. Do rysowania tekstu służy metoda DrawString klasy Graphics (wiele wersji).

Wyrównanie tekstu Metoda DrawString może rozmieszczać tekst w zadanym obszarze. Można stosować wyrównywanie tekstu.

Rozmiar tekstu Gdy nie wiemy ile miejsca zajmie tekst możemy to obliczyć za pomocą metody MeasureString klasy Graphics.

Przekształcenia Dostępne są trzy rodzaje przekształceń: Skalowanie ScaleTransform Przesunięcie TranslateTransform Obrót RotateTransform Każdy obiekt narysowany po zdefiniowaniu przekształcenia będzie przekształcony. Przekształcenia się kumulują.

Tekst pod kątem

Tekst przekształcony

Ścieżki Ścieżki (GraphicsPath) łączą wiele kształtów prostych w jeden obiekt. Klasa GraphicsPath ma metody odpowiadające metodom Draw klasy Graphics i zaczynające się od Add:

Stosowanie maski Aby ograniczyć obszar, na którym rysujemy można stosować maskę (Clipping). Służy do tego metoda SetClip klasy Graphics. Za maskę może służyć: Cały obszar (obiekt klasy Graphics) Prostokąt (Rectangle) Ścieżka (GraphicsPath) Region (Region)

Maska

Rysowanie obrazów Do rysowania obrazów służy metoda DrawImage, która ma kilka wersji. Rysuje obraz w podanym punkcie Rysuje obraz w prostokącie Rysuje obraz w równoległoboku

Własności obrazów Plik graficzny może w sobie zawierać wiele dodatkowych informacji np. dane EXIF. Dostęp do nich można uzyskać poprzez kolekcję PropertyItems klasy Image. Niestety rodzaj informacji określany jest przez liczbę i konieczne jest skorzystanie ze słownika. Mogą one też być binarne, tekstowe, itp.

Własności obrazów

Formaty plików Obrazy można zapisywać w różnych formatach. Format wybiera się z typu wyliczeniowego ImageFormat.

Kompresja Dla wybranego formatu można ustawiać parametry kompresora.

Drukowanie Drukowanie nie różni się wiele od rysowania na ekranie. Nadal korzystamy z klasy Graphics, tylko jest ona skojarzona z drukarką. Drukowanie odbywa się przy wykorzystaniu klasy PrintDocument. Klasa ta ma trzy ważne zdarzenia: BeginPrint EndPrint PrintPage

Drukowanie W zdarzeniu PrintPage umieszcza się drukowanie pojedynczej strony. Jeżeli stron jest więcej to należy odpowiednio obsłużyć komunikat i nastąpi ponowne uruchomienie tego zdarzenia.

Drukowanie

Właściwości drukowania Ustawienia dotyczące drukarki i drukowania dostępne są jako obiekty klas PrinterSettings i PageSettings. Do ustawiania opcji można wykorzystać komponent PageSetupDialog.

Tworzenie własnych kontrolek

Własne kontrolki Na platformie.net można tworzyć własne kontrolki Muszą one dziedziczyć pośrednio po klasie Control Mogą być elementem projektu (Assembly)lub znajdować się w osobnej bibliotece DLL

Rodzaje nowych kontrolek Kontrolki będące rozszerzeniem już istniejących, Kontrolki złożone z innych kontrolek, Kontrolki tworzone od podstaw.

Tworzenie biblioteki kontrolek

Pusta kontrolka

Pusta kontrolka Domyślnie kontrolka dziedziczy po klasie UserControl

Rozszerzenie funkcjonalności Na przykładzie TextBox a ValidatedTextBox: sprawdza poprawność np. n-ru PESEL, zmienia kolor, gdy jest aktywny uniemożliwia wpisywanie głupot

Dziedziczenie Dziedziczymy po istniejącej kontrolce - TextBox Zmianie ulega widok w projektancie

FocusColor Dodajemy pole i właściwość FocusColor Dodajemy obsługę zdarzeń Enter i Leave

Odrzucanie znaków W przypadku wpisywania n-ru PESEL chcemy mieć tylko cyfry

Walidacja danych Sprawdzanie poprawności numeru PESEL

Komunikat Aby wyświetlić informację o błędzie możemy dodać do kontrolki element ErrorProvider i obsługę zdarzenia Validate

Kontrolka złożona Dzień liturgiczny: kontrolka kalendarz etykietka

Kod w VB

Kontrolka złożona FilterBox podobny jak w MacOS X Ponownie dziedziczymy po UserControl Dodajemy zwykły TextBox

Styl zachowania W konstruktorze ustawiamy style zachowania kontrolki A potem dodajemy metody wiążące wygląd kontrolki z TextBox em

Rysowanie kontrolki Kontrolkę rysujemy przeciążając metodę OnPaint

Rysowanie kontrolki

Rysowanie kontrolki

Efekt rysowania Rysowanie przezroczystych kontrolek lub kontrolek o nietypowym kształcie nie jest proste! Ustawianie koloru na Transparent nic nie da! Windows zakłada, że kontrolka ma kształt prostokątny i w całym tym obszarze jest ona odpowiedzialna za narysowanie się.

Region Musimy poinformować Windows, że kontrolka ma nietypowy kształt

Zdarzenia Taka kontrolka powinna informować o zmianie swojej zawartości Definiujemy argumenty zdarzenia zawierające tekst

Generowanie zdarzenia Wciskanie klawiszy powoduje wygenerowanie zdarzenia z opóźnieniem (Timer)

Kontrolka własna ProgressIndicator - podobnie jak w MacOS X Znowu dziedziczymy po UserControl

Pola i właściwości

Konstruktor

Rysowanie

Właściwości kontrolki Nowe właściwości kontrolki domyślnie trafiają do kategorii Misc Możemy tym sterować za pomocą atrybutów

Atrybuty kontrolki Sama kontrolka też może mieć atrybuty

Designer Zachowanie kontrolki w trakcie projektowania można kontrolować Konieczne jest utworzenie klasy dziedziczącej po klasie ControlDesigner Klasa ta jest potem kojarzona z kontrolką

ControlDesigner Trzeba dodać referencję na System.Design

Usunięte właściwości

Verbs Właściwości pojawiające się w menu kontekstowym

Dodawanie komponentów Chcąc dodać nowe komponenty klikamy prawym klawiszem na pasku kompenentów

Dodawanie komponentów Jeżeli komponent nie jest zarejestrowany w systemie można go poszukać korzystając z przycisku Browse.

Dodawanie komponentów Dodawać można także kontrolki ActiveX (OCX)

Dodawanie komponentów Dla kontrolek typu COM (ActiveX) tworzone są pliki opisujące ich interfejs w postaci plików DLL, których nazwy zaczynają się od Interop.. Przykład dla Excela i IE

Dystrybucja komponentów Użytkownikowi końcowemu trzeba dostarczyć z programem wszystkie wykorzystywane pliki DLL. Najlepiej przechowywać je w katalogu programu, ewentualnie w katalogu System32. Komponenty można dodać do globalnego repozytorium, tak aby były widoczne dla innych aplikacji.