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

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

Tworzenie grafiki GDI

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

Jarosław Kuchta Podstawy Programowania Obiektowego. Podstawy grafiki obiektowej

Podstawy programowania w środowisku Windows. Oto identyfikatory najczęściej obsługiwanych meldunków (przedrostek WM to skrót od Windows message):

Projektowanie graficzne. Wykład 2. Open Office Draw

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

SYLABUS ECCC MOD U Ł : C S M2 GR A F I K A KO M P U T E R O W A PO Z I O M: PO D S T A W O W Y (A)

1 Zrozumieć Flasha... 1 Co można zrobić za pomocą Flasha?... 2 Tworzenie obrazków do strony 3 Animowanie witryny 4 Tworzenie filmów

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

dr inż. Piotr Odya dr inż. Piotr Suchomski

Rozszerzenia plików graficznych do publkacji internetowych- Kasia Ząbek kl. 2dT

1. Przypisy, indeks i spisy.

Kurs programowania. Wykład 6. Wojciech Macyna. 7 kwietnia 2016

1 LEKCJA. Definicja grafiki. Główne działy grafiki komputerowej. Programy graficzne: Grafika rastrowa. Grafika wektorowa. Grafika trójwymiarowa

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

Tworzenie prostych obrazów wektorowych w programie CorelDRAW 12

Druga aplikacja Prymitywy, alpha blending, obracanie bitmap oraz mały zestaw przydatnych funkcji wyświetlających własnej roboty.

Kraków, ver

Laboratorium 10 - Web Services

7. Dynamiczne generowanie grafiki

Microsoft Small Basic

Podstawy programowania GUI niskiego poziomu. APLETY.

Formaty plików graficznych

Grafika na stronie www

GLKit. Wykład 10. Programowanie aplikacji mobilnych na urządzenia Apple (IOS i ObjectiveC) #import "Fraction.h" #import <stdio.h>

PROGRAMOWANIE GRAFIKI 2D W ŚRODOWISKU EMBARCADERO RAD STUDIO XE4 Z WYKORZYSTANIEM BIBLIOTEKI DirectX

Corel Draw, Adobe Illustrator grafika wektorowa

Opis Edytora postaci Logomocji

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

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

Multimedia i interfejsy. Ćwiczenie 5 HTML5

Wykład 5 Okna MDI i SDI, dziedziczenie

Grafika w aplikacjach lp. Jak zmienić kolor tła?

GDI+. NOWE MOŻLIWOŚCI PODSYSTEMU GRAFICZNEGO MICROSOFT WINDOWS

Laboratorium Programowanie urządzeń mobilnych

Wirtualne drukarki konwertujące pliki aplikacji do formatu *.pdf i formatów graficznych

Rodzaje plików. Podstawowe definicje.

Corel Draw, Adobe Illustrator grafika wektorowa

KATEGORIA OBSZAR WIEDZY

Trzy kategorie: Grafika z komputera. grafika rastrowa (grafika bitmapowa lub malarska), Grafika wektorowa Grafika prezentacyjna

Szybkie tworzenie grafiki w GcIde

Allegro5 3/x. Przykład wklejamy go do dev'a zamiast kodu domyślnego dal programu z allegro i kompilujemy.

dr hab. inż. Lidia Jackowska-Strumiłło, prof. PŁ Instytut Informatyki Stosowanej, PŁ

Veslava Osińska IINB UMK, Toruń. Multimedia w dokumentach

WIZUALIZACJA INFORMACJI TEKSTOWEJ WSTĘP DO HTML 5 CANVAS

ECDL/ICDL Edycja obrazów Moduł S4 Sylabus - wersja 2.0

FORMATY PLIKÓW GRAFICZNYCH

1.3. Tworzenie obiektów 3D. Rysunek 1.2. Dostępne opcje podręcznego menu dla zaznaczonego obiektu

STWORZENIE MODUŁU POBIERAJĄCEGO WEKTOROWE

Plan wykładu. Wprowadzenie Program graficzny GIMP Edycja i retusz zdjęć Podsumowanie. informatyka +

Formaty plików. graficznych, dźwiękowych, wideo

CorelDRAW. wprowadzenie

Plan wykładu. Wprowadzenie Program graficzny GIMP Edycja i retusz zdjęć Podsumowanie. informatyka +

Zaawansowany kurs języka Python

Księgarnia PWN: Andrzej Jaskulski - AutoCAD 2010/LT Podstawy projektowania parametrycznego i nieparametrycznego

Visual Studio instalacja

Cała prawda o plikach grafiki rastrowej

Podstawy użytkowania systemu Linux

E.14.1 Tworzenie stron internetowych / Krzysztof T. Czarkowski, Ilona Nowosad. Warszawa, Spis treści

Wykorzystanie grafiki wektorowej do tworzenia elementów graficznych stron i prezentacji

1 Ergonomia i komputer Wprowadzenie Krótka historia ergonomii Ergonomiczna praca z komputerem... 11

STWORZENIE MOBILNEJ APLIKACJI,

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.

AutoCAD LT praca na obiektach rastrowych i nakładanie barw z palety RGB na rysunki.

Kurs WWW. Paweł Rajba.

Grafika. Formaty zapisu obrazu cyfrowego

Jak uzyskać efekt 3D na zdjęciach z wykorzystaniem programu InkScape

Rok akademicki: 2013/2014 Kod: JIS s Punkty ECTS: 5. Poziom studiów: Studia I stopnia Forma i tryb studiów: -

Kompresja obrazów i formaty plików graficznych

Tabela porównawcza. Porównanie programów CorelCAD 2015 dla systemów Windows i Mac OS oraz półprofesjonalnych aplikacji typu CAD

ECDL/ICDL CAD 2D Moduł S8 Sylabus - wersja 1.5

Rysowanie punktów na powierzchni graficznej

GRAFIKA RASTROWA. WYKŁAD 2 Oprogramowanie i formaty plików. Jacek Wiślicki Katedra Informatyki Stosowanej

Projekcje multimedialne

Laboratorium z informatyki sem. III/ćw. 2 Wydział Transportu PW /19 MATERIAŁY POMOCNICZE DO ĆWICZENIA 2

Z życia grafika-webmastera

Aplikacje w Visual C Przyk³ady

Marysia Donten Kuba Pochrybniak

Programowanie komputerów Wykład 6: Aplety Java

Informatyka I : Tworzenie projektu

Grafika komputerowa. Dla DSI II

Wprowadzenie do prezentacji multimedialnych

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

Tworzenie plików w formacie DjVu z wykorzystaniem oprogramowania DocumentExpress Enterprise Edition

Google Earth. Co to jest Google Earth? Co to jest KML? Skąd można pobrać Google Earth?

Obsługa programu Paint materiały szkoleniowe

Systemy wirtualnej rzeczywistości. Komponenty i serwisy

Programowanie na poziomie sprzętu. Programowanie w Windows API

Rysowanie prostych obiektów graficznych przy użyciu biblioteki AWT (Abstract Window Toolkit)

Rozdział 3. Zapisywanie stanu aplikacji w ustawieniach lokalnych

HARMONOGRAM SZKOLENIA ECDL moduł S4 - edycja obrazów

HARMONOGRAM SZKOLENIA ECDL moduł S4 - edycja obrazów

SimpleX. graficzny edytor do tworzenia ilustracji naukowych. Marysia Donten Kuba Pochrybniak

Ćwiczenie nr 4 INSTRUKCJA LABORATORYJNA

CorelDraw PROGRAM SZKOLENIA. Terminy szkolenia

Kompresja Stratna i Bezstratna Przegląd Najważniejszych Formatów Graficznych

Grafika komputerowa. Zajęcia 7

GRAFIKA KOMPUTEROWA I TWORZENIE STRON WWW

1. Opis okna podstawowego programu TPrezenter.

Transkrypt:

1 GDI+ Następca GDI (Graphics Device Interface) całkowicie obsługuje GDI dla kompatybilności z istniejącymi aplikacjami optymalizacja wielu cech GDI rozszerzenie o nowe możliwości Biblioteka obiektowa dwie niezależne implementacje:.net i kod niezarządzany Obsługiwane wersje Windows: w instalacji XP i wszystkich następnych jako dodatek możliwy do zainstalowania na NT 4.0 SP6, 2000, 98, Me Gdiplus.dll

2 Nowe cechy GDI+ Gradientowe pędzle (liniowe i zadawane ścieżkami) Krzywe typu Cardinal (cardinal splines) Niezależne obiekty ścieżek (GraphicsPath) Przekształcenia, obiekty Matrix Przekształcenia regionów Przezroczystość (alpha blending) Formaty plików graficznych: BMP, GIF, JPEG, Exif, PNG, TIFF, ICON, WMF, EMF

3 Obiekt klasy Graphics Podstawowa, najważniejsza klasa GDI+ Zwykle związany z oknem Zawiera ustawienia decydujące o rysowaniu elementów Udoskonalenia w stosunku do GDI: pióra, pędzle, ścieżki, obrazki i fonty jako parametry metod nie ma aktualnej pozycji wykorzystywanej do rysowania linii oddzielne metody do rysowania konturu i wypełnionej figury private void AboutForm_Paint(object sender, PaintEventArgs e) { e.graphics.fillrectangle(brushes.white, 0, 0, 200, 100); Pen mp = new Pen(Color.Red, 3); e.graphics.drawline(mp, 20, 10, 90, 90); }

4 Użycie obiektu klasy Graphics Pobieranie Graphics: obsługa zdarzenia Paint: PaintEventArgs.Graphics Control.CreateGraphics() Graphics: FromHdc(), FromHwnd(), FromImage() Wymuszanie odświeżenia: Form.Invalidate() Form.Update(), Form.Refresh() Zapobieganie mruganiu: // zwykle w konstruktorze lub OnLoad DoubleBuffered = true;

Proste figury Metody klasy Graphics: proste figury: DrawLine(), DrawRectangle(), DrawEllipse(), DrawArc(), DrawPolygon() FillEllipse(), FillPie(), FillPolygon(), FillRectangle() krzywe typu Cardinal: DrawCurve(), DrawClosedCurve() FillClosedCurve() krzywe Beziera: DrawBezier(), DrawBeziers() 5

6 Ścieżki Tworzone z linii, prostych figur i krzywych Klasa GraphicsPath dodawanie prostych figur do ścieżki: AddLine(), AddRectangle(), AddEllipse(), AddArc(), AddPie(), AddBezier(), AddCurve(), AddClosedCurve(), AddPolygon(), AddString() łączenie dwóch ścieżek: AddPath() Graphics.DrawPath() Graphics.FillPath()

Pióra Klasa Pen Właściwości: szerokość SetWidth() wyrównanie SetAlignment(), wyliczenie PenAlignment końce linii SetStartCap(), SetEndCap(), wyliczenie LineCap łączenie linii SetLineJoin(), wyliczenie LineJoin kreskowanie linii SetDashPattern() tekstura Image image = new Bitmap("texture.jpg"); TextureBrush tbrush = new TextureBrush(image); Pen texturedpen = new Pen(tBrush, 30); e.graphics.drawline(texturedpen, 0, 0, 50, 50); 7

8 Pędzle Abstrakcyjna klasa Brush SolidBrush, HatchBrush, TextureBrush, LinearGradientBrush, PathGradientBrush SolidBrush solidbrush = new SolidBrush( Color.FromArgb(255, 255, 0, 0)); e.graphics.fillellipse(solidbrush,0,0,100,60); HatchBrush hbrush = new HatchBrush( HatchStyle.Horizontal, Color.Green, Color.Blue); e.graphics.fillellipse(hbrush,100,0,100,60); Image image = new Bitmap("texture.jpg"); TextureBrush tbrush = new TextureBrush(image); tbrush.transform = new Matrix(75.0f/640.0f, 0.0f, 0.0f, 75.0f/480.0f, 0.0f, 0.0f); e.graphics.fillellipse(tbrush,200,0,100,60);

9 Obrazki Klasa Image - abstrakcyjna Klasa Bitmap dziedzicząca z Image wyspecjalizowane metody do odczytu, wyświetlania i modyfikacji obrazków rastrowych PixelFormat.Format32bppPArgb (klasa CachedBitmap w wersji niezarządzanej) format zgodny z aktualnymi ustawieniami ekranu trzymanie obrazków w tym formacie może znacznie przyspieszyć ich rysowanie

Graphics.DrawImage() 10 Obcinanie Skalowanie, wyliczenie InterpolationMode Obracanie, odwracanie, przekrzywianie Automatyczne skalowanie, gdy nie został podany rozmiar GDI+ skaluje obrazki w taki sposób, by ich fizyczny rozmiar na urządzeniu używanym do rysowania był jak najbliższy fizycznemu rozmiarowi na urządzeniu, na którym zostały stworzone

Image Encoders i Decoders Wyliczenie zainstalowanych encoders i decoders: ImageCodecInfo: GetImageEncoders(), GetImageDecoders() Konwersja obrazków Image image = new Bitmap("bird.jpg"); try { image.save("bird.png", ImageFormat.Png); } catch (Exception exc) { MessageBox.Show("conversion failed: exc=" + exc.tostring()); } 11

12 Przezroczystość displaycolor = sourcecolor * alpha / 255 + backgroundcolor * (255 alpha) / 255 Color 4 wartości: alpha, red, green, blue (ARGB) SolidBrush opaque(color.fromargb(255,0,0,255)); SolidBrush semi(color.fromargb(128,0,0,255)); Tryby składania (Compositing modes) Wartości Alpha w obrazkach

Teksty Graphics.DrawString() w określonym miejscu w określonym prostokącie Formatowanie wyrównanie StringFormat.SetAlignment(), StringFormat.SetLineAlignment() tabulatory StringFormat.SetTabStops() pionowy tekst StringFormat.SetFormatFlags() Antyaliasing Graphics.SetTextRenderingHint() 13

Fonty Tworzenie Font font = new Font("Arial", 16, FontStyle.Regular); 14 Wielkości Font.GetSize() FontFamily.GetEmHeight() FontFamily.GetCellAscent() FontFamily.GetCellDescent() FontFamily.GetLineSpacing()

15 Kontenery graficzne Stan obiektów klasy Graphics powiązanie z kontekstem urządzenia ustawienia dot. jakości przekształcenia region obcinania Użycie kontenerów graficznych Pen pen = new Pen(Color.Red); GraphicsContainer graphicscontainer; gr.translatetransform(100.0f, 80.0f); graphicscontainer = gr.begincontainer(); gr.rotatetransform(30.0f); gr.drawrectangle(pen,-60,-30,120,60); gr.endcontainer(graphicscontainer); gr.drawrectangle(pen,-60,-30,120,60);

16 Przekształcenia Klasa Matrix Proste metody klasy Graphics: ScaleTransform() RotateTransform() TranslateTransform() Kolejność przekształceń jest znacząca

Regiony Klasa Region Elementy: linie wielokąty krzywe Sprawdzenie zawierania punktu Region.IsVisible(point, graphics) Obcinanie Graphics.SetClip(region) 17

Zmiana kolorów Struktura ColorMatrix Klasa ImageAttributes Image im = new Bitmap(@"d:\img.jpg"); ImageAttributes imageattributes = new ImageAttributes(); float[][] colormatrixelements = { new float[] {1.0f, 0.0f, 0.0f, 0.0f, 0.0f}, new float[] {0.0f, 1.0f, 0.0f, 0.0f, 0.0f}, new float[] {0.5f, 0.0f, 1.0f, 0.0f, 0.0f}, new float[] {0.0f, 0.0f, 0.0f, 1.0f, 0.0f}, new float[] {0.0f, 0.0f, 0.0f, 0.0f, 1.0f}}; ColorMatrix colormatrix = new ColorMatrix(colorMatrixElements); imageattributes.setcolormatrix(colormatrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap); e.graphics.drawimage(im, new Rectangle(15, 10, im.width, im.height), 0, 0, im.width, im.height, GraphicsUnit.Pixel, imageattributes); 18

Użycie GDI+ z kodu niezarządzanego Dołączyć nagłówek gdiplus.h //!!! NIE DEFINIOWAC WIN32_LEAN_AND_MEAN //#define WIN32_LEAN_AND_MEAN #include <windows.h> #include <gdiplus.h> 19 Dołączyć przestrzeń nazw Gdiplus using namespace Gdiplus; Dołączyć do projektu bibliotekę gdiplus.lib w ustawieniach projektu albo użyć dyrektywy #pragma // albo dodac w ustawieniach projektu #pragma comment(lib, "gdiplus.lib")

Użycie GDI+ z kodu niezarządzanego c.d. Zainicjować GDI+ GdiplusStartupInput gdiplusstartupinput; ULONG_PTR gdiplustoken; GdiplusStartup(&gdiplusToken, gdiplusstartupinput, NULL); Używać obiektów i metod GDI+ PAINTSTRUCT ps; HDC hdc = BeginPaint(hWnd, &ps); Graphics mygraphics(hdc); //... EndPaint(hWnd, &ps); Zwolnić zasoby używane przez GDI+ GdiplusShutdown(gdiplusToken); 20