GDI+. NOWE MOŻLIWOŚCI PODSYSTEMU GRAFICZNEGO MICROSOFT WINDOWS
|
|
- Marek Świderski
- 9 lat temu
- Przeglądów:
Transkrypt
1 Scientific Bulletin of Che lm Section of Mathematics and Computer Science No. 1/2008 GDI+. NOWE MOŻLIWOŚCI PODSYSTEMU GRAFICZNEGO MICROSOFT WINDOWS MACIEJ SMIATACZ, MARCIN RÓŻAŃSKI Wydział Elektroniki, Telekomunikacji i Informatyki, Politechnika Gdańska Streszczenie. W pracy przedstawiono krótką charakterystykę GDI+, podsystemu graficznego dostępnego w nowych wersjach Microsoft Windows. Omówiono najważniejsze ulepszenia wprowadzone w stosunku do oryginalnego GDI oraz problemy techniczne związane ze stosowaniem GDI+, podano również wyniki własnych testów wydajnościowych nowej technologii. 1. Wprowadzenie W okresie dominacji systemu MS DOS na komputerach klasy PC podstawową formą komunikacji pomiędzy użytkownikiem a systemem był tzw. CLI (Command Line Interface), a wszelka interakcja człowieka z komputerem odbywała się w trybie tekstowym. Pojawienie się systemu Microsoft Windows wprowadziło pod tym względem istotną zmianę, polegającą na powszechnym przyjęciu koncepcji interfejsu graficznego, tzw. GUI (Graphical User Interface). Interfejs taki udostępniał ujednolicone rozwiązania w postaci pewnej liczby funkcjonalnych elementów graficznych, takich jak przyciski, rozwijane menu czy okna dialogowe. Pozwalało to na uwolnienie programisty od konieczności fizycznego rysowania na ekranie elementów aplikacji. Jednocześnie rozwój rozwiązań sprzętowych spowodował konieczność zapewnienia prawidłowego działania różnych kart graficznych. Rozwiązaniem tego problemu było przeniesienie obowiązku implementacji obsługi sprzętowych właściwości karty graficznej na producenta, który za pośrednictwem sterowników DDI (Device Driver Interface) dbał o kompatybilność własnych rozwiązań z wymogami systemu. Wymuszało to również zmianę sposobu dostępu do zasobów ekranu, realizowanego teraz przez podsystem GDI (Graphics Device Interface). Schemat z rysunku 1 obrazuje standardowy model dostępu do karty graficznej przez aplikację systemu Windows XP. Może się on odbywać przez biblioteki DirectX (w tym przypadku Direct3D) lub GDI - dalej następuje odwołanie do sterownika urządzenia (DDI), a dopiero ten ma możliwość bezpośredniego adresowania rejestrów i pamięci karty graficznej. Treść artykułu była prezentowana w czasie VII Konferencji Informatyki Stosowanej maja 2008 r.) 283 (Chełm
2 284 MACIEJ SMIATACZ, MARCIN RÓŻAŃSKI Rysunek 1. Podsystem graficzny w Microsoft Windows XP [1] Standaryzacja obsługi kart graficznych w systemach Windows sprawiła, że producenci sprzętu zaczęli coraz szybciej dostarczać coraz wydajniejsze rozwiązania. Równolegle dynamicznie rozwijały się technologie programistyczne takie jak DirectX czy OpenGL, będące w stanie wykorzystywać możliwości najnowszych kart. Inaczej działo się w dziedzinie obsługi grafiki na poziomie interfejsu użytkownika Windows - funkcje GDI od czasu wydania Windows 3.11 nie były w żaden znaczący sposób rozszerzane. Sytuację zmienił Windows XP, który zawiera graficzną bibliotekę GDI+ wykorzystywaną m.in. do prezentowania interfejsu Luna. Stała się ona również podstawowym systemem obsługi grafiki w technologii Microsoft.NET. Mimo to wiedza na temat nowych możliwości GDI+ jest wśród informatyków stosunkowo mało rozpowszechniona. Należy zaznaczyć, że wraz z pojawieniem się systemu Windows Vista sposób obsługi urządzeń graficznych został zdefiniowany na nowo. Stworzono tzw. Windows Display Driver Model (WDDM), którego zadaniem jest m.in. poprawa stabilności systemu, umożliwienie sprawnego odtwarzania filmów o wysokiej rozdzielczości (HD) oraz zapewnienie warunków do uruchamiania atrakcyjnych gier, których jakość byłaby konkurencyjna w stosunku do specjalistycznych konsoli. Najistotniejszy jednak wydaje się fakt wprowadzenia mechanizmu DWM (Desktop Window Manager), który kontroluje dostęp programów do pulpitu. DWM jest aplikacją Direct3D, a instrukcje GDI i GDI+ odwołują się do karty graficznej za jej pośrednictwem. Oznacza to, że w najnowszym systemie Microsoftu nie ma sprzętowego wsparcia dla grafiki dwuwymiarowej. 2. Standardowa biblioteka graficzna GDI Zadaniem GDI jest zarządzanie obsługą ekranu poprzez, z jednej strony, dostęp do usług sterownika karty graficznej, z drugiej strony - udostępnienie wszystkim aplikacjom pewnego zakresu funkcji graficznych zawartych w bibliotece gdi32.dll. Sterownik zgłasza bibliotece, które funkcje ma zaimplementowane, dzięki czemu możliwe jest ich wykonanie ze sprzętową akceleracją. Rolą GDI jest m.in. zarządzanie dostępem do graficznych zasobów urządzeń wyjściowych, takich jak monitor, drukarka, ploter itp., przy czym od samego początku przyjęto założenie, że wszystkie te urządzenia będą obsługiwane za pomocą tego samego zestawu funkcji. Ujednolicenie obsługi wyjścia graficznego uzyskano za pomocą tzw. kontekstu urządzenia (Device Context). Jest on pewną strukturą w pamięci operacyjnej (lub wideo) zawierającą bufor reprezentujący powierzchnię, na której będą przeprowadzane operacje graficzne, oraz serię pól opisujących logiczne
3 GDI+. NOWE MOŻLIWOŚCI PODSYSTEMU GRAFICZNEGO i fizyczne właściwości urządzenia graficznego, jak np. wymiary kontekstu, jego format, układ odniesienia, jednostki itp. W praktyce kontekst traktować można jako tablicę pikseli w odpowiednim formacie (głębi koloru), o początku układu współrzędnych w lewym górnym rogu, z osią X rosnącą w prawo i osią Y rosnącą w dół. Istnieje możliwość zdefiniowania innego układu odniesienia, jak również posługiwania się innymi miarami jednostek niż piksele - np. milimetry czy cale Podstawowe funkcje rysujące. Podsystem GDI, po uzyskaniu przez aplikację kontekstu urządzenia, oferuje podstawowe funkcje graficzne. Część z nich wykorzystuje ustawione funkcją SelectObject obiekty z kontekstu. Takimi obiektami są przede wszystkim odpowiedzialne za kolor obiekty Pen (pióro) i Brush (pędzel). Pierwszy z nich odpowiada najczęściej za wszelkiego rodzaju kontury, proste, łamane i krzywe, określając ich kolor, grubość oraz styl. Drugi obiekt odpowiedzialny jest za wypełnianie powierzchni pomiędzy konturami, ale w niektórych funkcjach odpowiada również za kontury. Wypełnienie, podobnie jak kontury, może być zrealizowane różnymi deseniami. Zapis i odczyt pikseli realizowany jest przez funkcje SetPixel i GetPixel. Pomimo swej prostoty są one stosunkowo powolne ze względu na konieczność wykonywania szeregu operacji poprzedzających zapis bądź odczyt piksela. Po pierwsze, GDI przeprowadza transformację współrzędnych punktu wg ustawionych zasad mapowania kontekstu, dalej sprawdza, czy punkt znajduje się w obszarze określonym przez przycinanie, a jeśli wynik testu jest pozytywny, przekształca zapis COLORREF z formatu BGR na RGB, jednocześnie dokonując konwersji 32 bitowego koloru logicznego na fizyczny, o ile kontekst ekranowy ma format koloru różny od logicznego. W przypadku realizacji procedur związanych z przetwarzaniem obrazu piksel po pikselu funkcje te nie sprawdzają się nawet na szybkich maszynach. Odczyt piksela przez CPU z pamięci wideo realizowany poprzez sterownik jest stosunkowo powolny i ma stałe opóźnienie związane z architekturą kart graficznych. Odczyt i zapis można przyśpieszyć operując na kontekście pamięciowym, który jest umieszczony w standardowej puli pamięci i dostęp do niego jest szybszy - niemniej jednak i taki sposób z użyciem funkcji Get/SetPixel nie nadaje się do wydajnego przetwarzania obrazów. Rysowanie odcinków realizowane jest funkcją LineTo, łamane można rysować za pomocą Polyline. Krzywe, oferowane przez GDI, zaimplementowane są w PolyBezierTo na podstawie algorytmu Beziera. System GDI oferuje też funkcje do kreślenia podstawowych figur geometrycznych na płaszczyźnie, należą do nich: Rectangle, Ellipse, Arc, Chord i Pie. GDI zawiera również funkcję rysującą cieniowane trójkąty i prostokąty. W przypadku prostokątów metoda ta ogranicza możliwość cieniowania do ustawienia gradientu koloru zmieniającego się tylko w poziomie lub w pionie. Funkcja korzystająca z gradientu obliczanego na prostokącie i zmieniającego się poziomo jest wykorzystana m.in. w listwach tytułu okien w trybie klasycznym Exploratora Windows Bitmapy i operacje rastrowe. System Windows rozróżnia dwa rodzaje bitmap, tzw. DIB (Device Independent Bitmap) i DDB (Device Dependent Bitmap). Do przechowywania bitmap niezależnych wprowadzono plik w formacie.bmp, dla którego oferowane jest wsparcie operacji odczytu. Inaczej jest z bitmapami zależnymi od urządzenia, te mają format zgodny z zadanym kontekstem, co pozwala zoptymalizować szybkość wykonywanych na nich operacji. Są one obiektem GDI i odwołujemy się do nich poprzez
4 286 MACIEJ SMIATACZ, MARCIN RÓŻAŃSKI uchwyty HBITMAP. Bitmapy DDB najczęściej przechowywane są w pamięci wideo, natomiast DIB w pamięci konwencjonalnej, do której istnieje swobodny dostęp. Funkcje ładujące bitmapy z plików/zasobów to LoadBitmap i LoadImage. By wyświetlić bitmapę na ekranie, należy umieścić ją najpierw w kontekście pamięciowym utworzonym funkcją CreateCompatibleDC. GDI udostępnia kilka funkcji służących do kopiowania bitmap z kontekstu pamięciowego do innych, w tym i ekranowego: BitBlt, StretchBlt, TransparentBlt, AlphaBlend Złożone figury 2D. GDI do operacji na złożonych figurach wykorzystuje tzw. regiony. Są to obiekty geometryczne takie jak elipsa, prostokąt itp., na których można przeprowadzać podstawowe operacje boolowskie - dodawać do siebie, wyznaczać część wspólną, różnicę czy różnicę symetryczną. Realizuje to funkcja CombineRgn. Kolejnym obiektem pozwalającym na tworzenie złożonych figur jest tzw. ścieżka (Path). Do utworzenia obiektu ścieżki wykorzystuje się zwykłe funkcje rysujące, jednak umieszczone pomiędzy wywołaniami funkcji BeginPath i EndPath. Po wywołaniu drugiej funkcji utworzona ścieżka automatycznie jest ustawiana w kontekście urządzenia wskazanego jako parametr. Na skonstruowanym obiekcie ścieżki można wykonać szereg operacji za pomocą odpowiednich funkcji, np. StrokePath obrysowuje ścieżkę przy użyciu aktualnego obiektu Pen, a FillPath wypełnia wnętrze ścieżki przy użyciu ustawionego w kontekście obiektu Brush. Na ścieżkach nie ma możliwości wykonywania operacji boolowskich, można natomiast łatwo stworzyć złożoną figurę, a następnie przekonwertować ją do regionu Ograniczenia GDI. GDI od czasów Windows 95/98 nie uległo żadnym znaczącym zmianom. Koncepcja i funkcjonalność pozostaje taka sama, dodawane były jedynie pojedyncze funkcje. Najbardziej dotkliwym problemem GDI jest obsługa wczytywania jedynie formatu BMP, mimo że już od dłuższego czasu prym w grafice wiodą formaty kompresowane, takie jak JPEG, PNG, GIFF, przede wszystkim ze względu na swoje rozmiary oraz możliwość zapisywania dodatkowych informacji, jak np. kanał alfa, kolor tła, itp. Windows co prawda daje możliwość zdekompresowania pliku JPEG lub GIF do kontekstu urządzenia, ale odbywa się to poprzez stosunkowo niewygodne mechanizmy OLE i udostępniany przezeń interfejs IPicture. Można byłoby oczekiwać, by przynajmniej te możliwości zostały obudowane przez jakieś funkcje umieszczone w bibliotece gdi32.dll, tak by korzystanie z nich było zgodne z koncepcją programowania GDI. Trzeba mieć jednak na uwadze, że nawet korzystanie z mechanizmów OLE nie pozwala na obsługę coraz bardziej popularnego formatu PNG. Kolejnym zauważalnym ograniczeniem GDI jest brak obsługi przeźroczystości dla kreślenia prymitywów. Oferowana możliwość wykorzystania alpha-blendingu dotyczy tylko kopiowania bitmap. Można używać stałych współczynników przeźroczystości dla całej bitmapy lub współczynników kanału alfa z każdego piksela, ale ponieważ odnosi się to jedynie do prostokątnych bitmap, elastyczne posługiwanie się tą techniką nie jest możliwe. 3. Nowa biblioteka graficzna GDI+ Biblioteka GDI+ została wprowadzona wraz z systemem Windows XP jako następczyni GDI. W założeniu miała uprościć tworzenie aplikacji i jednocześnie dać do ręki programistom znacznie bardziej elastyczną i wszechstronną bibliotekę graficzną niż GDI.
5 GDI+. NOWE MOŻLIWOŚCI PODSYSTEMU GRAFICZNEGO GDI+ różni się od swojej poprzedniczki nie tylko rozszerzonymi możliwościami, ale i koncepcją API. Biblioteka oferuje bowiem dwa sposoby wywoływania funkcji - standardowy, jak w GDI, zwany w dokumentacji flat API, oraz obiektowy, przygotowany do wykorzystywania z poziomu języka C++. Odpowiednie klasy i metody zdefiniowane są w nagłówkowym pliku gdiplus.h. Większość metod i konstruktorów obiektów jest przeciążonych, co oznacza, że można tworzyć te same obiekty oraz wywoływać te same metody z różnymi zestawami parametrów. Kolejną poważną zmianą jest obiekt Graphics, który obecnie stanowi podstawę działania biblioteki. Oferuje on metody graficzne, które operują na skojarzonym z nim kontekście. W GDI do każdej funkcji podawało się w parametrach kontekst, w GDI+ kontekst jest powiązany z konkretnym obiektem, więc jest to informacja zbędna. Zmianom uległ również sposób wskazywania aktywnych obiektów - w przeciwieństwie do kontekstu GDI, obiekt Graphics przy operacjach graficznych nie wymaga ustawiania w jego strukturze żadnych parametrów typu Pen czy Brush, a używa się ich bezpośrednio w wywoływanych metodach rysujących. Metody te wymagają też, by został im podany parametr koloru. W GDI+ kolor definiowany jest przez klasę Color (w GDI była to struktura COLORREF), umożliwiającą podanie informacji o przeźroczystości (kanał A). Nowością jest klasa TextureBrush, która jako pędzla używa obrazu z obiektu Image. Pozwala to na wypełnianie rysowanych figur bitmapami. Klasa TextureBrush pozwala również na wykonanie przed rysowaniem transformacji tekstury, takich jak skalowanie, obrót czy translacja. Klasa LinearGradientBrush umożliwia z kolei uzyskanie cieniowanych pędzli z płynnie zmieniającym się kolorem. GDI+ pozwala również kontrolować, w jakich krokach i zakresach chcemy interpolować barwę. Obiekt Pen można tworzyć z obiektu pędzla, co pozwala na wykorzystanie wszystkich właściwości klas pędzli - można więc rysować kontury mające płynne cieniowane kolory lub zawierające odpowiednie fragmenty tekstury. Metody rysowania prymitywów oferowane przez obiekt Graphics są podzielone na dwa typy: rysowanie konturów i wypełnianie wnętrz. Podział ten jest bardzo konsekwentnie przestrzegany w GDI+ w przeciwieństwie do GDI, gdzie brakowało jednoznaczności; założenie, że piórami rysowane są kontury, a pędzlami wypełniane ich obszary, dotyczyło jedynie podstawowych figur. W GDI+ metody rysowania konturów zaczynają się od przedrostka Draw, a obiekt Pen określa kolor, natomiast metody wypełniania prymitywów zaczynają się od przedrostka Fill, a sposób wypełniania określa jedna z odmian obiektu Brush. Podstawowe prymitywy, jakie udostępnia Graphics, są takie same jak w GDI. Nowymi funkcjami są DrawCurve oraz Draw/FillClosedCurve, które rysują tzw. cardinal splines - krzywe z dowolnej liczby punktów. Ważnym parametrem jest tzw. współczynnik giętkości, który przy wartości 0.0f tworzy między punktami odcinki prostej, przy wartościach większych odpowiednio zakrzywia połączenia. Krzywa tego rodzaju ma tę właściwość, że przechodzi przez wszystkie punkty ją definiujące - a więc inaczej niż w przypadku krzywych Beziera, gdzie krzywa nie musi przechodzić przez punkty kontrolne. Poprawiono również wygodę posługiwania się ścieżkami, którymi obecnie zarządza obiekt GraphicsPath. W GDI ścieżka była przypisana do konkretnego kontekstu, a więc w danym kontekście mogła istnieć tylko jedna ścieżka, która po narysowaniu była niszczona. W GDI+ ścieżki są niezależnymi obiektami. Po utworzeniu pustego obiektu ścieżki można dodawać kolejne elementy poprzez metody identyczne z wymienionymi powyżej, z tą różnicą, że zamiast przedrostka Draw / Fill występuje Add, np. dodanie
6 288 MACIEJ SMIATACZ, MARCIN RÓŻAŃSKI odcinka wykonuje metoda GraphicsPath::AddLine z parametrami współrzędnych. Natomiast całkiem nową możliwością jest poddawanie ścieżki transformacjom macierzowym. Podobnym zmianom uległy regiony, zarządzane w GDI+ przez obiekt Region. Udostępnia on metody operacji boolowskich na regionach analogiczne do tych z GDI. W GDI+ regiony są w pewien sposób zależne od obiektu ścieżki, tzn. budowanie złożonych regionów jest niemożliwe bez tworzenia ścieżki; z kolei na ścieżkach nie można wykonywać operacji boolowkich, a można wykonywać je na regionach. By wykorzystać pełnię możliwości operowania na złożonych obiektach trzeba się posługiwać zamiennie obiektami regionów i ścieżek Metody obsługi obrazów klasy Image. Klasa Image jest na pewno jednym z najbardziej oczekiwanych rozwiązań, jakich brakowało standardowemu GDI. Siłą tej klasy jest współpraca z formatami graficznymi takimi jak BMP, GIF, TIFF, JPEG, PNG, Exif, WMP, EMF oraz ze standardowymi ikonami. Przeciążony konstruktor pozwala tworzyć obiekt na kilka sposobów, np. poprzez podanie nazwy pliku lub utworzenie obiektu z interfejsu strumienia zawierającego dane obrazu. Ta druga możliwość wymaga odwoływania się do obiektów i interfejsów OLE, pozwala jednak na utworzenie obiektu Image z obrazu, który przygotowaliśmy dynamicznie w pamięci lub obrazu wczytanego z pliku do pamięci przydzielonej za pomocą mechanizmów OLE (CoTaskMemAlloc) i podpiętej pod interfejs IStream. Utworzony obiekt Image można przede wszystkim skopiować do kontekstu obiektu Graphics metodą Graphics::DrawImage. Za pomocą SetColorKey można natomiast ustawić kolory kluczowe, tj. zakres kolorów pikseli, które podczas kopiowania bitmap są pomijane. Porównaniu podlegają wszystkie składowe i aby kolor został odrzucony, wszystkie trzy muszą się znajdować w określonym przedziale. Funkcja SetColorMatrix ustawia macierz transformacji, którym jest poddawany kolor każdego kopiowanego piksela. Pierwszy parametr wskazuje na obiekt macierzy koloru; ma ona wymiary 5 5 i pozwala na wykonanie wszystkich podstawowych operacji transformacji (translacja, rotacja, skalowanie, pochylanie) na każdym z kanałów. Każdy piksel można bowiem traktować jako pięcioelementowy wektor [R GBA1]iwykonywaćnanimprzekształcenia poprzez przemnożenie przez macierz transformacji - np. translacja będzie dodaniem lub odjęciem pewnej wartości do odpowiednich kanałów. Tego typu operacje pozwalają w łatwy sposób zmieniać globalne właściwości obrazu, takie jak jasność, wysterowanie wybranych kanałów koloru, tłumienie czy maskowanie wybranych składowych itp. Klasa Image pozwala na odczytywanie i zapisywanie wymienianych już wyżej formatów graficznych. Najprostszym sposobem na zapisanie do pliku grafiki jest użycie metody Image::Save, gdzie pierwszy parametr to nazwa pliku, w którym zapisujemy obraz, drugi parametr to identyfikator kodeka, który obsługuje dany format, trzeci zaś wskazuje na tablicę dodatkowych parametrów formatu pliku graficznego, do którego zapisywany jest obraz. CLSID kodeka, który posłużyć ma do zapisu obrazu, pobrać możemy funkcją Get- ImageEncoders. W przypadku formatów, gdzie występuje np. kompresja, należy jeszcze skorzystać z klasy EncoderParameters - bez określenia odpowiedniego parametru stopień kompresji ustawiany jest na domyślny, co nie zawsze musi być zgodne z oczekiwaniami. Drugą istotną klasą obsługującą obrazy jest klasa Bitmap, która dziedziczy z Image. Klasa ta pozwala na tworzenie obiektu na kilka interesujących sposobów, np. z powierzchni DirectDraw. Poza tym obiekt Bitmap dziedziczy konstruktor z klasy Image, a więc może wczytać obraz z pliku lub z interfejsu IStream. Klasa Bitmap oferuje szerszy
7 GDI+. NOWE MOŻLIWOŚCI PODSYSTEMU GRAFICZNEGO zakres metod niż Image; jedną z ciekawszych jest ApplyEffect, która stosuje na bitmapie efekt zdefiniowany przez obiekty potomne klasy Effect. W tym przypadku minimalne wymagania to biblioteka gdiplus.dll w wersji 1.1 oraz plik nagłówkowy gdipluseffects.h, które są jednak dostępne dopiero w Windows Vista. Klasa Effect odpowiedzialna jest za podstawowe operacje przetwarzania obrazów. Dziedziczą z niej m.in. takie klasy jak Blur - rozmycie obrazu, Sharpen - wyostrzenie obrazu, RedEyesCorrection - korekcja efektu czerwonych oczu, BrightnessContrast - regulacja jasności i kontrastu Metody transformacji geometrycznych. Przy określaniu współrzędnych ekranowych GDI+ wykonuje serię transformacji, mających odniesienie do trzech układów współrzędnych - świata, strony i urządzenia. Każda współrzędna P, będąca parametrem metod obiektu Graphics, podlega serii przekształceń, których wynikiem jest punkt w przestrzeni urządzenia: P dev = P M w M p, gdzie M w - macierz transformacji tzw. świata (określającego logiczną przestrzeń, w której współrzędne są liczbami zmiennoprzecinkowymi), a M p - macierz transformacji strony (mechanizmu sterującego zależnościami między abstrakcyjnym światem a przestrzenią urządzenia). Ponieważ okno aplikacji, w którym odbywa się rysowanie, jest zazwyczaj przesunięte względem początku ekranu, wykonywana jest jeszcze translacja punktów z przestrzeni urządzenia, co daje w efekcie współrzędne ekranowe. GDI+ wprowadza łatwe w użyciu metody, pozwalające na wykonywanie przekształceń geometrycznych na płaszczyźnie, m.in. dzięki obiektowi Matrix, który reprezentuje macierz o wymiarach 3 3. Udostępnia on metody takie jak Translate(dx, dy) - przesunięcie o dx i dy, Rotate(angle) - rotacja wokół punktu (0, 0), RotateAt(ang, pt) - obrót wokół punktu pt, Scale(dx,dy) - skalowanie, Shear(cx, cy) - mnożenie macierzy obiektu z macierzą pochylenia utworzoną na podstawie parametrów cx i cy Parametry renderowania grafiki. Jak już wspomniano, w GDI+ jednym z parametrów tworzonego koloru jest kanał alfa. Jest on również brany pod uwagę podczas kopiowania obrazów metodą Graphics::DrawImage. Składowa A jest odpowiedzialna za przeźroczystość rysowanych pikseli. Kolor mający składową A ustawioną na wartość zero oznacza piksel całkowicie przeźroczysty, natomiast wartość całkowicie nieprzeźroczysty. Domyślnie łączenie obrazów z kanałem alfa jest włączone, ale gdy nie ma potrzeby korzystania z przeźroczystości można je wyłączyć. Kontrolę operacji łączenia sprawuje się za pośrednictwem metody Graphics::SetCompositingMode, która oferuje dwa możliwe tryby pracy: w pierwszym wypadku kanał alfa brany jest pod uwagę i następuje łączenie, w drugim natomiast piksele źródłowe zastępują piksele tła, na które są kopiowane. Tryb łączenia warto ustawiać na CompositingModeSourceCopy, gdy konieczne jest wykorzystanie pełnej wydajności operacji kopiowania, a nie ma potrzeby obliczania przeźroczystości. Kolejnym istotnym parametrem związanym z jakością renderingu jest SmoothingMode, czyli tryb wygładzania ziarnistości rysowanych konturów figur. Jakość wygładzania jest kontrolowana poprzez metodę Graphics::SetSmoothingMode. Możliwymi wartościami są: wygładzanie wyłączone, wygładzanie w filtrze 8 4, wygładzanie w filtrze 8 8. Rysowanie odcinka (krzywej) polega na aproksymowaniu za pomocą pikseli (mających współrzędne całkowite) idealnej prostej pomiędzy dwoma punktami. Ponieważ idealny odcinek posiada zazwyczaj punkty o współrzędnych rzeczywistych, ich aproksymacja za pomocą współrzędnych całkowitych może być obarczona błędem - różnym w różnych punktach odcinka. Najprostszą metodą wygładzania jest uzależnienie koloru piksela od
8 290 MACIEJ SMIATACZ, MARCIN RÓŻAŃSKI wielkości błędu - czym większy błąd, tym piksel mniej wyrazisty. Obliczając dodatkowo błędy pikseli w pewnym sąsiedztwie otrzymać można płynne wygładzanie krawędzi odcinka różnymi tonacjami koloru. GDI+, wg dokumentacji, zmniejszenie wyrazistości koloru piksela realizuje poprzez ustawianie w nim odpowiedniej wielkości kanału alfa i zmieszanie rysowanego piksela z tłem - piksele idealne lub o małym błędzie są nieprzeźroczyste, wraz z powiększaniem się błędu piksele stają się bardziej przeźroczyste i tym samym w mniejszym stopniu wpływają na obraz odcinka. Ponieważ wygładzanie realizowane jest za pomocą kanału alfa, konieczne jest ustawienie trybu łączenia na wartość CompositingModeSourceOver. Ostatnim z parametrów klasy Graphics, określającym jakość generowanej grafiki, jest wybór trybu interpolacji pikseli podczas kopiowania bitmapy ze zmianą rozmiarów lub podczas wykonywania rotacji. Tryb ten ustawić można za pomocą metody Graphics::SetInterpolationMode. Szybkość rysowania na ekranie jest zazwyczaj odwrotnie proporcjonalna do jakości, dlatego też możliwość kontroli parametrów renderowanej grafiki jest istotnym atutem GDI+. Nie ulega również wątpliwości, że oferowane metody poprawy jakości grafiki są sporym skokiem w stosunku do starego GDI, który w tej dziedzinie w zasadzie nic nie oferował. 4. Porównanie GDI z GDI+ Podstawowym kryterium porównania są na pewno możliwości bibliotek i tu zdecydowanie przewagę uzyskuje nowsza - GDI+. Pełne wsparcie dla kanału alfa, obsługa wielu formatów graficznych, transformacji geometrycznych ścieżek, tekstur i regionów, nowy rodzaj krzywej pozwalający na dowolne manipulowanie jej kształtem, kontrola jakości poprzez antyaliasing - wszystko to sprawia, że można by się pokusić o wykorzystywanie samego GDI+ zamiast GDI. Przy wszystkich tych zaletach, GDI+ ma też wadę: jest nią wydajność. Ilustruje to tabela 1, będąca wykazem czasów uzyskanych podczas testowania podstawowych funkcji graficznych systemu. W tabeli ujęte są wyniki odpowiadające wykonaniu kolejnych testów. Testy mierzące kopiowanie obrazów korzystały z bitmapy w formacie BMP 24-bitowym (plik bez kanału alfa) o wymiarach Każdy test wykonywano w pętli razy dla szybkich operacji lub 1000 razy dla wolniejszych. Dodatkowo dla uzyskania bardziej przystających wyników, tryb łączenia kanału alfa został włączony jedynie w przypadku testów badających alpha-blending, jego jakość ustawiona była na najniższą, a wygładzanie zostało wyłączone. Oto wykaz przeprowadzonych testów: - test1 - narysowanie dwóch odcinków, - test2 - narysowanie dwóch wypełnionych prostokątów, - test3 - dwukrotne kopiowanie obrazu z lekkim przesunięciem; bitmapa wczytana została przez obiekt Bitmap, w teście GDI wykorzystano funkcję BitBlt, w GDI+ metodę DrawImage, - test4 - dwukrotne kopiowanie bitmapy zależnej od urządzenia; w GDI utworzono bitmapę DDB wczytując ją funkcją LoadImage, w GDI+ wykorzystano obiekt CachedBitmap, - test5 - dwukrotne kopiowanie obrazu z ustawionym stałym współczynnikiem przeźroczystości; w GDI współczynnik ten ustawiony był na 50% w funkcji AlphaBlend, w GDI+ wykorzystano macierz koloru z ustawionym elementem [3][3] na 0.5 (odpowiada on za transformację składowej A),
9 GDI+. NOWE MOŻLIWOŚCI PODSYSTEMU GRAFICZNEGO test6 - dwukrotne kopiowanie obrazu z uwzględnieniem przeźroczystości; współczynniki składowej A zostały programowo wpisane do każdego piksela bitmapy; alpha-blending wykonywany jest na podstawie wartości kanału A każdego piksela, - test7 - kopiowanie dwóch obrazów z ustawionym stałym współczynnikiem przeźroczystości; test korzystał z bitmap DDB (GDI) i obiektu CachedBitmap (GDI+). Tabela 1: Testy wydajnościowe (eksperymenty własne [2]) Nazwa testu Czas operacji [ms] [liczba iteracji] GDI 16bpp GDI 32bpp GDI+ 16bpp GDI+ 32bpp test1 [10000] test2 [10000] test3 [10000] test4 [10000] test5 [1000] test6 [1000] test7 [1000] Test wyraźnie pokazuje, że wydajność GDI+ jest kilkakrotnie niższa od tej uzyskanej przez GDI. Najgorsze wyniki uzyskują funkcje związane z kopiowaniem obrazów z uwzględnieniem alpha-blendingu - są one nawet ponad 10 razy wolniejsze od ich odpowiedników w GDI. Odpowiedzialny za to jest stopień akceleracji - po utworzeniu bitmapy jako DDB sterownik karty graficznej umieszcza ją w pamięci karty i samo kopiowanie jest realizowane sprzętowo. Test został wykonany na systemie Windows XP z kartą graficzną Radeon 7000 ze standardowym sterownikiem z dodatku Service Pack 2. Po sprawdzeniu funkcją GetDeviceCaps sterownik wykazuje, że wspiera wszystkie kategorie funkcji GDI. Obserwując działanie aplikacji narzędziem CodeAnalyst firmy AMD i Menedżerem zadań Windows można było stwierdzić, że podczas testu GDI przez 99% czasu procesor działa w trybie jądra, co oznacza, że funkcje realizowane są na poziomie sterownika i sprzętu, podczas gdy dla GDI+ 99% czasu spędza w trybie użytkownika, z czego wynika, że wsparcia sprzętowego brak. Microsoft w dokumentacji utrzymuje, że GDI+ ma wiele funkcji zoptymalizowanych w stosunku do GDI - być może jest to prawda, zwłaszcza że można znaleźć w bibliotece użycie instrukcji MMX. Jednak jakość tej optymalizacji jest mierzalna w stosunku do GDI jedynie na maszynach, w których GDI nie ma wsparcia sprzętowego i wykonuje funkcje programowo. Brak sprzętowego wsparcia operacji graficznych jest największą wadą i zarazem istotnym ograniczeniem GDI+. Microsoft wiedząc o tym pozostawił furtkę w postaci dość płynnej współpracy obu bibliotek, tzn. GDI+ może zwracać swoje obiekty w postaci uchwytów GDI (np. kontekst, bitmapy, regiony) i na odwrót - może tworzyć własne obiekty na podstawie uchwytów do obiektów GDI. Dzięki temu można korzystać z operacji graficznych GDI i GDI+ na jednym kontekście, co pozwala na rozsądne wykorzystanie zalet obu bibliotek jednocześnie.
10 292 MACIEJ SMIATACZ, MARCIN RÓŻAŃSKI W ramach własnych eksperymentów podjęta została próba poprawienia wydajności GDI+ poprzez wykorzystanie funkcji kopiujących z biblioteki GDI - jak widać w wynikach testów, kopiowanie bitmap odbywa się dużo szybciej w przypadku standardowego GDI. Niestety, przyśpieszenie, którego się spodziewano, nie miało miejsca - a to za sprawą dosyć specyficznego udostępniania uchwytów do kontekstów GDI. Oczekiwano, że technicznie jest to operacja prosta i kontekst GDI po wywołaniu metody Graphics::GetHdc() zostanie szybko zwrócony. Operacja taka w zasadzie mogła się ograniczyć do utworzenia kontekstu pamięciowego o wymiarach 1 1, stworzenia obiektu DIB z gotowej już mapy bitowej bmpoffs i zwrócenia uchwytu kontekstu z ustawioną już w nim bitmapą bmpoffs. Jednak zostało to zaimplementowane inaczej: GDI+ tworzy nowy kontekst GDI oraz bitmapę GDI o rozmiarach bitmapy bmpoffs i kopiuje całą bitmapę do utworzonego kontekstu. Aby z powrotem uzyskać dostęp do możliwości operowania na bitmapie metodami GDI+, konieczne jest zwolnienie kontekstu wywołaniem metody Graphics::ReleaseHDC, co powoduje kolejne kopiowanie całego kontekstu GDI do mapy bitowej GDI+. Narzut wprowadzony przez te dwie metody jest ogromny i nawet jeśli zmiana dotyczy jedynie kilku pikseli, kopiowane są pomiędzy kontekstami GDI i GDI+ całe obszary bitmapy bmpoffs, co niweluje zalety szybkiego kopiowania bitmap pomiędzy kontekstami GDI. Takie rozwiązanie ma jednak swoje uzasadnienie, podobnie działają bowiem metody obiektu Bitmap::Lock, czy też operacje blokowania we wszystkich komponentach DirectX - blokowanie tekstur, blokowanie buforów wierzchołków, blokowanie powierzchni, itd. Jest to, jak się wydaje, kwestia pewnej konsekwencji implementacyjnej związanej z planami powiązania GDI+ ze wsparciem sprzętowym. Ponieważ, jak wspomniano we wprowadzeniu, w środowisku Windows Vista nie ma już bezpośredniego wsparcia sprzętowego dla GDI, z chwilą zastosowania nowego systemu przewaga wydajnościowa starej biblioteki nad nową prawdopodobnie znika. Stanowiłoby to ostateczny argument za przejściem na GDI+ ze względu na znacznie większe możliwości i wygodę programowania. Odpowiednie testy porównawcze nie zostały jednak przez nas dotąd przeprowadzone. 5. Problemy techniczne z GDI+ Innej natury trudnością okazało się działanie jednej z najważniejszych funkcji GDI+ - DrawImage. Metoda ta ma problemy z precyzyjnym skalowaniem obrazów o wartości pełne, np.: 25% (4 mniejszy), 50% (2 mniejszy), 200% (2 większy), 300%, 400%, itp. Jest to tzw. border bug - błąd ramki czy krawędzi. Objawia się to dwojako, po pierwsze nieprawidłowym powielaniem lub eliminowaniem linii pionowych i poziomych bitmapy. Skalowanie bitmapy ze współczynnikiem 0.5 zmniejsza ją dwa razy, co powinno skutkować wyeliminowaniem co drugiej jej linii, podobnie przy skalowaniu np. o współczynnik 2 - wszystkie linie powinny zostać podwójnie narysowane - tak się jednak nie dzieje. W przypadku powiększenia o 200% w poziomie pierwsza pionowa linia była rysowana jeden raz, natomiast ostatnia rysowana była dwa razy, a dodatkowo dorysowywana była czarna trzecia linia. Przy pewnych współczynnikach skalowania dochodzi przesunięcie rysowanej bitmapy o jeden piksel w lewo lub do góry - ma to miejsce w przypadku nieparzystych współrzędnych docelowych (lewego górnego rogu). W aplikacji objawia się to tym, iż błędne renderowanie pikseli ma wpływ na różnice pomiędzy obliczonymi współrzędnymi bitmapy pod kursorem myszy a faktycznymi współrzędnymi obrazu.
11 GDI+. NOWE MOŻLIWOŚCI PODSYSTEMU GRAFICZNEGO Podczas rysowania pojedyncze piksele będą więc przesunięte, np. o jedną pozycję w prawo - przekłamania zależą od współczynnika skali. Oficjalne materiały Microsoftu nic na ten temat nie mówią, natomiast informacje na temat błędu można znaleźć na stronach grup dyskusyjnych, gdzie wypowiadają się osoby z zespołu tworzącego podsystem graficzny Windows. Proponowane rozwiązanie miało polegać na wywoływaniu metody DrawImage z zestawem parametrów określającym współrzędne źródłowej bitmapy w formacie zmiennopozycyjnym i odjęciu od tych współrzędnych wartości 0.5f. Operacja ta przynosi faktycznie rezultaty, ale tylko w przypadku skalowania o 200% lub 50%, inne kombinacje współczynników nadal wykazywały błędy w rysowaniu. Dla różnych współczynników skalowania błędy można było minimalizować ustawiając docelowe współrzędne rysowania (lewego górnego rogu) na parzyste, dawało to w wielu przypadkach oczekiwane wyniki. Eksperymentalnie stwierdzono, że problem błędnego kopiowania ze skalowaniem rozwiązuje ustawianie współrzędnych docelowych na wartości parzyste oraz odjęcie od współrzędnych źródłowych lewego górnego rogu wartości 0.4f. 6. Podsumowanie Wprowadzenie GDI+ stanowiło z pewnością duży krok w rozwoju podsystemu graficznego Microsoft Windows. Informacje o nowych możliwościach oferowanych przez tę bibliotekę są niewątpliwie warte rozpowszechnienia, bowiem większość programistów albo ogranicza się do korzystania z podstawowych funkcji standardowego GDI, albo też przechodzi do bardziej zaawansowanych technologii, takich jak DirectX bądź OpenGL. Tymczasem GDI+ umożliwia stosunkowo proste tworzenie zaawansowanych aplikacji związanych z przygotowywaniem grafiki dwuwymiarowej, a nawet przetwarzaniem obrazów. Bibliografia [1] Microsoft Developers Network - MSDN Library, [2] Różański M., Prosty program do edycji obrazów wykorzystujący technologię GDI+, Praca dyplomowa inżynierska, Politechnika Gdańska, Gdańsk [3] CodeProject, BorderBug, GDI+. THE NEW FEATURES OF GRAPHICS SUBSYSTEM OF MICROSOFT WINDOWS MACIEJ SMIATACZ, MARCIN RÓŻAŃSKI Abstract. The paper presents a short characterization of GDI+, the graphical subsystem available in new versions of Microsoft Windows. The most important improvements offered over the original GDI are described together with some technical problems related to the practical application of GDI+. The results of our own efficiency tests are also provided.
Wizualne systemy programowania. Wykład 11 Grafika. dr Artur Bartoszewski -Wizualne systemy programowania, sem. III- WYKŁAD
Wizualne systemy programowania Wykład 11 Grafika 1 dr Artur Bartoszewski -Wizualne systemy programowania, sem. III- WYKŁAD Grafika GDI+ GDI+ - Graphics Device Interface jeden z trzech podstawowych komponentów
0. OpenGL ma układ współrzędnych taki, że oś y jest skierowana (względem monitora) a) w dół b) w górę c) w lewo d) w prawo e) w kierunku do
0. OpenGL ma układ współrzędnych taki, że oś y jest skierowana (względem monitora) a) w dół b) w górę c) w lewo d) w prawo e) w kierunku do obserwatora f) w kierunku od obserwatora 1. Obrót dookoła osi
Wprowadzenie do rysowania w 3D. Praca w środowisku 3D
Wprowadzenie do rysowania w 3D 13 Praca w środowisku 3D Pierwszym krokiem niezbędnym do rozpoczęcia pracy w środowisku 3D programu AutoCad 2010 jest wybór odpowiedniego obszaru roboczego. Można tego dokonać
Opis Edytora postaci Logomocji
Opis Edytora postaci Logomocji Przyciski na pasku narzędzi Przyciski Wygląd Opis W Edytorze postaci można otwierać pliki o rozszerzeniach: Otwórz plik postaci lgf (plik Edytora postaci), imp (plik projektu
Podstawy Informatyki Wykład V
Nie wytaczaj armaty by zabić komara Podstawy Informatyki Wykład V Grafika rastrowa Paint Copyright by Arkadiusz Rzucidło 1 Wprowadzenie - grafika rastrowa Grafika komputerowa tworzenie i przetwarzanie
GRAFIKA. Rodzaje grafiki i odpowiadające im edytory
GRAFIKA Rodzaje grafiki i odpowiadające im edytory Obraz graficzny w komputerze Może być: utworzony automatycznie przez wybrany program (np. jako wykres w arkuszu kalkulacyjnym) lub urządzenie (np. zdjęcie
GRAFIKA WEKTOROWA. WYKŁAD 1 Wprowadzenie do grafiki wektorowej. Jacek Wiślicki Katedra Informatyki Stosowanej
GRAFIKA WEKTOROWA WYKŁAD 1 Wprowadzenie do grafiki wektorowej Jacek Wiślicki Katedra Informatyki Stosowanej Grafika rastrowa i wektorowa W grafice dwuwymiarowej wyróżnia się dwa rodzaje obrazów: rastrowe,
DesignCAD 3D Max 24.0 PL
DesignCAD 3D Max 24.0 PL Październik 2014 DesignCAD 3D Max 24.0 PL zawiera następujące ulepszenia i poprawki: Nowe funkcje: Tryb RedSDK jest teraz dostępny w widoku 3D i jest w pełni obsługiwany przez
Obsługa programu Paint. mgr Katarzyna Paliwoda
Obsługa programu Paint. mgr Katarzyna Paliwoda Podstawowo program mieści się w Systemie a dojście do niego odbywa się przez polecenia: Start- Wszystkie programy - Akcesoria - Paint. Program otwiera się
GRAFIKA RASTROWA. WYKŁAD 1 Wprowadzenie do grafiki rastrowej. Jacek Wiślicki Katedra Informatyki Stosowanej
GRAFIKA RASTROWA WYKŁAD 1 Wprowadzenie do grafiki rastrowej Jacek Wiślicki Katedra Informatyki Stosowanej Grafika rastrowa i wektorowa W grafice dwuwymiarowej wyróżnia się dwa rodzaje obrazów: rastrowe,
Expo Composer. www.doittechnology.pl 1. Garncarska 5 70-377 Szczecin tel.: +48 91 404 09 24 e-mail: info@doittechnology.pl. Dokumentacja użytkownika
Expo Composer Dokumentacja użytkownika Wersja 1.0 www.doittechnology.pl 1 SPIS TREŚCI 1. O PROGRAMIE... 3 Wstęp... 3 Wymagania systemowe... 3 Licencjonowanie... 3 2. PIERWSZE KROKI Z Expo Composer... 4
Grafika rastrowa (bitmapa)-
Grafika komputerowa Grafika rastrowa Grafika rastrowa (bitmapa)- sposób zapisu obrazów w postaci prostokątnej tablicy wartości, opisujących kolory poszczególnych punktów obrazu (prostokątów składowych).
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.
Elementy programu Paint Aby otworzyć program Paint, należy kliknąć przycisk Start i Paint., Wszystkie programy, Akcesoria Po uruchomieniu programu Paint jest wyświetlane okno, które jest w większej części
Dell Display Manager podręcznik użytkownika
Dell Display Manager podręcznik użytkownika Przegląd Korzystanie z okna dialogowego szybkich ustawień Ustawianie podstawowych funkcji wyświetlania Przypisywanie trybów ustawień wstępnych do aplikacji Stosowanie
1. Przypisy, indeks i spisy.
1. Przypisy, indeks i spisy. (Wstaw Odwołanie Przypis dolny - ) (Wstaw Odwołanie Indeks i spisy - ) Przypisy dolne i końcowe w drukowanych dokumentach umożliwiają umieszczanie w dokumencie objaśnień, komentarzy
Obsługa programu Paint materiały szkoleniowe
Obsługa programu Paint materiały szkoleniowe Nota Materiał powstał w ramach realizacji projektu e-kompetencje bez barier dofinansowanego z Programu Operacyjnego Polska Cyfrowa działanie 3.1 Działania szkoleniowe
Systemy wirtualnej rzeczywistości. Komponenty i serwisy
Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych Systemy wirtualnej rzeczywistości Laboratorium Komponenty i serwisy Wstęp: W trzeciej części przedstawione zostaną podstawowe techniki
1. Prymitywy graficzne
1. Prymitywy graficzne Prymitywy graficzne są elementarnymi obiektami jakie potrafi bezpośrednio rysować, określony system graficzny (DirectX, OpenGL itp.) są to: punkty, listy linii, serie linii, listy
CorelDRAW. 1. Rysunek rastrowy a wektorowy. 2. Opis okna programu
1. Rysunek rastrowy a wektorowy CorelDRAW Różnice między rysunkiem rastrowym (czasami nazywanym bitmapą) a wektorowym są olbrzymie. Szczególnie widoczne są podczas skalowania (czyli zmiany rozmiaru) rysunku
Grafika komputerowa. Dla DSI II
Grafika komputerowa Dla DSI II Rodzaje grafiki Tradycyjny podział grafiki oznacza wyróżnienie jej dwóch rodzajów: grafiki rastrowej oraz wektorowej. Różnica pomiędzy nimi polega na innej interpretacji
Dell Display Manager - przewodnik użytkownika
Dell Display Manager - przewodnik użytkownika Przegląd Dell Display Manager to aplikacja dla systemu Microsoft Windows, używana do zarządzania monitorem lub grupą monitorów. Umożliwia ręczną regulację
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)
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) GRUPA KOMPETENCJI KOMPETENCJE OBJĘTE STANDARDEM ECCC 1. Teoria grafiki komputerowej 1.1. Podstawowe pojęcia
Dodawanie grafiki i obiektów
Dodawanie grafiki i obiektów Word nie jest edytorem obiektów graficznych, ale oferuje kilka opcji, dzięki którym można dokonywać niewielkich zmian w rysunku. W Wordzie możesz zmieniać rozmiar obiektu graficznego,
Wstęp Pierwsze kroki Pierwszy rysunek Podstawowe obiekty Współrzędne punktów Oglądanie rysunku...
Wstęp... 5 Pierwsze kroki... 7 Pierwszy rysunek... 15 Podstawowe obiekty... 23 Współrzędne punktów... 49 Oglądanie rysunku... 69 Punkty charakterystyczne... 83 System pomocy... 95 Modyfikacje obiektów...
Baltie 3. Podręcznik do nauki programowania dla klas I III gimnazjum. Tadeusz Sołtys, Bohumír Soukup
Baltie 3 Podręcznik do nauki programowania dla klas I III gimnazjum Tadeusz Sołtys, Bohumír Soukup Czytanie klawisza lub przycisku myszy Czytaj klawisz lub przycisk myszy - czekaj na naciśnięcie Polecenie
Plan wykładu. Akcelerator 3D Potok graficzny
Plan wykładu Akcelerator 3D Potok graficzny Akcelerator 3D W 1996 r. opracowana została specjalna karta rozszerzeń o nazwie marketingowej Voodoo, którą z racji wspomagania procesu generowania grafiki 3D
Programowanie na poziomie sprzętu. Programowanie w Windows API
Programowanie w Windows API Windows API Windows Application Programming Interface (API) to zestaw funkcji systemu operacyjnego Windows, które umożliwiają aplikacjom korzystanie z wszystkich usług systemu.
Jak zrobić klasyczny button na stronę www? (tutorial) w programie GIMP
Jak zrobić klasyczny button na stronę www? (tutorial) w programie GIMP Niniejszy tutorial jest wyłączną własnością Doroty Ciesielskiej Zapraszam na moją stronę http://www.direktorek03.wm studio.pl oraz
Rodzaje plików. Podstawowe definicje.
Rodzaje plików. Podstawowe definicje. Mariusz Tokarski Zagadnienia Zarządzanie plikami w systemie Windows Definicja pliku Opcje folderów Programy domyślne Współdzielenie plików przez programy Podstawowe
FORMATY PLIKÓW GRAFICZNYCH
FORMATY PLIKÓW GRAFICZNYCH Różnice między nimi. Ich wady i zalety. Marta Łukasik Plan prezentacji Formaty plików graficznych Grafika wektorowa Grafika rastrowa GIF PNG JPG SAV FORMATY PLIKÓW GRAFICZNYCH
Cała prawda o plikach grafiki rastrowej
~ 1 ~ Cała prawda o plikach grafiki rastrowej Grafika rastrowa to rodzaj grafiki zapisywanej na dysku w postaci bitmapy, czyli zbioru pikseli. W edytorach grafiki rastrowej możliwa jest edycja na poziomie
TECHNIKI MULTIMEDIALNE LABORATORIUM GIMP: Projektowanie tła
TECHNIKI MULTIMEDIALNE LABORATORIUM GIMP: Projektowanie tła 1. Cel ćwiczenia Celem ćwiczenia jest nabycie umiejętności tworzenia tła poprzez wykorzystanie funkcji dostępnych w programie GIMP. 2. Wiadomości
WSTĘP; NARZĘDZIA DO RYSOWANIA
1 z 5 Link do instalacji Gimpa Gimp WSTĘP; NARZĘDZIA DO RYSOWANIA Menu w Gimpie znajduje się w oknie głównym Gimpa i w oknie obrazu. Dostępne jest również po kliknięciu prawym klawiszem myszy na obraz.
GLKit. Wykład 10. Programowanie aplikacji mobilnych na urządzenia Apple (IOS i ObjectiveC) #import "Fraction.h" #import <stdio.h>
#import "Fraction.h" #import @implementation Fraction -(Fraction*) initwithnumerator: (int) n denominator: (int) d { self = [super init]; } if ( self ) { [self setnumerator: n anddenominator:
Implementacja filtru Canny ego
ANALIZA I PRZETWARZANIE OBRAZÓW Implementacja filtru Canny ego Autor: Katarzyna Piotrowicz Kraków,2015-06-11 Spis treści 1. Wstęp... 1 2. Implementacja... 2 3. Przykłady... 3 Porównanie wykrytych krawędzi
GIMP Grafika rastrowa (Ćwiczenia cz. 2)
Zjazd 1 GIMP Grafika rastrowa (Ćwiczenia cz. 2) Zaznaczenia Aby zacząć profesjonalnie rysować w programie GIMP należy opanować tematykę zaznaczeń. Zaznaczenia (inaczej maski) służą do zaznaczania obszarów
Księgarnia PWN: Andrzej Jaskulski - AutoCAD 2010/LT Podstawy projektowania parametrycznego i nieparametrycznego
Księgarnia PWN: Andrzej Jaskulski - AutoCAD 2010/LT2010+. Podstawy projektowania parametrycznego i nieparametrycznego Spis treści 1. Koncepcja i zawartość podręcznika...11 1.1. Zawartość programowa...11
1. Opis okna podstawowego programu TPrezenter.
OPIS PROGRAMU TPREZENTER. Program TPrezenter przeznaczony jest do pełnej graficznej prezentacji danych bieżących lub archiwalnych dla systemów serii AL154. Umożliwia wygodną i dokładną analizę na monitorze
Plan wykładu. Wprowadzenie Program graficzny GIMP Edycja i retusz zdjęć Podsumowanie. informatyka +
Plan wykładu Wprowadzenie Program graficzny GIMP Edycja i retusz zdjęć Podsumowanie 2 Po co obrabiamy zdjęcia Poprawa jasności, kontrastu, kolorów itp. Zdjęcie wykonano w niesprzyjających warunkach (złe
Tworzenie infografik za pomocą narzędzia Canva
Tworzenie infografik za pomocą narzędzia Canva Spis treści Wstęp... 1 Układy... 3 Zmiana tekstu... 4 Obrazki... 5 Elementy... 6 Zdjęcia - Gratis... 6 Siatki... 8 Ramki... 10 Kształty... 12 Linie... 12
Adobe Photoshop Dodatek do lab4 J.Wiślicki, A.Romanowski;
Spis treści 1. Proste efekty... 2 1.1. Cień...2 1.2. Planeta...5 1.3. Mandarynkowa kostka...8 Grafika rastrowa strona 1 z 9 1. Proste efekty Poniższe ćwiczenia dotyczą prostych (aczkolwiek ciekawych) efektów
7. Dynamiczne generowanie grafiki
7. Dynamiczne generowanie grafiki 7.1. Biblioteka GD Dynamiczne generowanie kodu HTML to podstawowe zastosowanie języka PHP. Często jednak to nie wystarczy i mieszanka: dynamiczny HTML plus statyczna grafika,
Ćwiczenia z grafiki komputerowej 4 PRACA NA WARSTWACH. Miłosz Michalski. Institute of Physics Nicolaus Copernicus University.
Ćwiczenia z grafiki komputerowej 4 PRACA NA WARSTWACH Miłosz Michalski Institute of Physics Nicolaus Copernicus University Październik 2015 1 / 14 Wykorzystanie warstw Opis zadania Obrazy do ćwiczeń Zadania
Jak uzyskać efekt 3D na zdjęciach z wykorzystaniem programu InkScape
Jak uzyskać efekt 3D na zdjęciach z wykorzystaniem programu InkScape Program InkScape jest bezpłatnym polskojęzycznym programem grafiki wektorowej do pobrania ze strony http://www.dobreprogramy.pl/inkscape,program,windows,12218.html.
dr hab. inż. Lidia Jackowska-Strumiłło, prof. PŁ Instytut Informatyki Stosowanej, PŁ
Wydział Elektrotechniki, Elektroniki, Informatyki i Automatyki Politechnika Łódzka Środowisko pracy grafików dr hab. inż. Lidia Jackowska-Strumiłło, prof. PŁ Instytut Informatyki Stosowanej, PŁ Formaty
Instrukcja użytkownika Dell Display Manager
Instrukcja użytkownika Dell Display Manager Informacje ogólne Dell Display Manager to aplikacja Windows wykorzystywana do zarządzania monitorem lub grupą monitorów. Umożliwia ona ręczną regulację wyświetlanego
Maskowanie i selekcja
Maskowanie i selekcja Maska prostokątna Grafika bitmapowa - Corel PHOTO-PAINT Pozwala definiować prostokątne obszary edytowalne. Kiedy chcemy wykonać operacje nie na całym obrazku, lecz na jego części,
Google Earth. Co to jest Google Earth? Co to jest KML? Skąd można pobrać Google Earth?
Google Earth Co to jest Google Earth? Google Earth jest to program umożliwiający wyświetlanie na trójwymiarowym modelu kuli ziemskiej zdjęć lotniczych/satelitarnych, zdjęć zrobionych z poziomu powierzchni
Ćwiczenie 1 Automatyczna animacja ruchu
Automatyczna animacja ruchu Celem ćwiczenia jest poznanie procesu tworzenia automatycznej animacji ruchu, która jest podstawą większości projektów we Flashu. Ze względu na swoją wszechstronność omawiana
SPIS TREŚCI: KARTY GRAFICZNE... 15
SPIS TREŚCI: Od Autora... 13 KARTY GRAFICZNE... 15 PRZEGLĄDANIE GRAFIKI... 17 Nowe formaty danych... 17 Program CyberView... 18 Konfiguracja za pomocą parametrów ikony... 21 Ustawianie parametrów ekranu
CPT-CAD - Program do tworzenia dokumentacji geologicznej i geotechnicznej
CPT-CAD - Program do tworzenia dokumentacji geologicznej i geotechnicznej Trzy w jednym?? Moduł CPT-CAD jest przeznaczony do tworzenia: map przekrojów geologicznych i geotechnicznych własnych rysunków
Rysowanie punktów na powierzchni graficznej
Rysowanie punktów na powierzchni graficznej Tworzenie biblioteki rozpoczniemy od podstawowej funkcji graficznej gfxplot() - rysowania pojedynczego punktu na zadanych współrzędnych i o zadanym kolorze RGB.
Część II Wyświetlanie obrazów
Tło fragmentu ABA-X Display jest wyposażony w mechanizm automatycznego tworzenia tła fragmentu. Najprościej można to wykonać za pomocą skryptu tlo.sh: Składnia: tlo.sh numer oznacza numer
Pokażę w jaki sposób można zrobić prostą grafikę programem GIMP. 1. Uruchom aplikację GIMP klikając w ikonę na pulpicie.
Tworzenie grafiki Jest wiele oprogramowania służącego tworzeniu grafiki. Wiele z nich daje tylko podstawowe możliwości (np. Paint). Są też programy o rozbudowanych możliwościach przeznaczone do robienia
Ćwiczenie 14 Dmuchawce
Dmuchawce Celem ćwiczenia jest wykorzystanie właściwości programu Flash do generowania animacji o charakterze losowym. Prezentowany efekt można wykorzystać do wielu różnych celów np. spadające liście,
Animacje z zastosowaniem suwaka i przycisku
Animacje z zastosowaniem suwaka i przycisku Animacja Pole równoległoboku Naukę tworzenia animacji uruchamianych na przycisk zaczynamy od przygotowania stosunkowo prostej animacji, za pomocą, której można
dr inż. Piotr Odya dr inż. Piotr Suchomski
dr inż. Piotr Odya dr inż. Piotr Suchomski Podział grafiki wektorowa; matematyczny opis rysunku; małe wymagania pamięciowe (i obliczeniowe); rasteryzacja konwersja do postaci rastrowej; rastrowa; tablica
Projektowanie graficzne. Wykład 2. Open Office Draw
Projektowanie graficzne Wykład 2 Open Office Draw Opis programu OpenOffice Draw OpenOffice Draw umożliwia tworzenie prostych oraz złożonych rysunków. Posiada możliwość eksportowania rysunków do wielu różnych
KGGiBM GRAFIKA INŻYNIERSKA Rok III, sem. VI, sem IV SN WILiŚ Rok akademicki 2011/2012
Rysowanie precyzyjne 7 W ćwiczeniu tym pokazane zostaną wybrane techniki bardzo dokładnego rysowania obiektów w programie AutoCAD 2012, między innymi wykorzystanie punktów charakterystycznych. Narysować
2 Przygotował: mgr inż. Maciej Lasota
Laboratorium nr 2 1/6 Grafika Komputerowa 3D Instrukcja laboratoryjna Temat: Manipulowanie przestrzenią 2 Przygotował: mgr inż. Maciej Lasota 1) Manipulowanie przestrzenią Istnieją dwa typy układów współrzędnych:
Cechy systemu X Window: otwartość niezależność od producentów i od sprzętu, dostępny kod źródłowy; architektura klient-serwer;
14.3. Podstawy obsługi X Window 14.3. Podstawy obsługi X Window W przeciwieństwie do systemów Windows system Linux nie jest systemem graficznym. W systemach Windows z rodziny NT powłokę systemową stanowi
Spis treści CZĘŚĆ I. NIEPARAMETRYCZNE PROJEKTOWANIE 2D...31
Spis treści 1. Koncepcja i zawartość podręcznika...13 1.1. Zawartość programowa...13 1.2. Zakładany efekt i metodyka szkolenia...14 1.3. Przeznaczenie...14 1.4. Autor...14 1.4.1. Blog...15 1.4.2. Kanał
Technologie Informacyjne
Grafika komputerowa Szkoła Główna Służby Pożarniczej Zakład Informatyki i Łączności December 12, 2016 1 Wprowadzenie 2 Optyka 3 Geometria 4 Grafika rastrowa i wektorowa 5 Kompresja danych Wprowadzenie
CUDA Median Filter filtr medianowy wykorzystujący bibliotekę CUDA sprawozdanie z projektu
CUDA Median Filter filtr medianowy wykorzystujący bibliotekę CUDA sprawozdanie z projektu inż. Daniel Solarz Wydział Fizyki i Informatyki Stosowanej AGH 1. Cel projektu. Celem projektu było napisanie wtyczki
Zadanie Wstaw wykres i dokonaj jego edycji dla poniższych danych. 8a 3,54 8b 5,25 8c 4,21 8d 4,85
Zadanie Wstaw wykres i dokonaj jego edycji dla poniższych danych Klasa Średnia 8a 3,54 8b 5,25 8c 4,21 8d 4,85 Do wstawienia wykresu w edytorze tekstu nie potrzebujemy mieć wykonanej tabeli jest ona tylko
WIZUALIZACJA INFORMACJI TEKSTOWEJ WSTĘP DO HTML 5 CANVAS
WIZUALIZACJA INFORMACJI TEKSTOWEJ WSTĘP DO HTML 5 CANVAS Autor prezentacji: Michał Kołkowski Promotor: prof dr. hb. Włodzisław Duch SPIS TREŚCI 1. Ogólnie o Canvasie 2. Utworzenie szablonu do pracy z Canvas
Szybkie tworzenie grafiki w GcIde
Szybkie tworzenie grafiki w GcIde Opracował: Ryszard Olchawa Poniższy opis dotyczy aplikacji okienkowej w systemie Windows lub Linux bazującej na obiektowej bibliotece rofrm stworzonej w środowisku GcIde.
1.3. Tworzenie obiektów 3D. Rysunek 1.2. Dostępne opcje podręcznego menu dla zaznaczonego obiektu
1. Edytor grafiki Draw 1.1. Okno programu Draw W bezpłatnym pakiecie OpenOffice zawarty jest program graficzny Draw (rysunek 1.1), wyposażony w liczne narzędzia do obróbki obiektów. Program możesz uruchomić,
SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE
SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE WINDOWS 1 SO i SK/WIN 006 Wydajność systemu 2 SO i SK/WIN Najprostszym sposobem na poprawienie wydajności systemu, jeżeli dysponujemy zbyt małą ilością pamięci RAM
Materiały dla studentów pierwszego semestru studiów podyplomowych Grafika komputerowa i techniki multimedialne rok akademicki 2011/2012 semestr zimowy
Materiały dla studentów pierwszego semestru studiów podyplomowych Grafika komputerowa i techniki multimedialne rok akademicki 2011/2012 semestr zimowy Temat: Przekształcanie fotografii cyfrowej w grafikę
Dell UltraSharp UP3017 Dell Display Manager Instrukcja użytkownika
Dell UltraSharp UP3017 Dell Display Manager Instrukcja użytkownika Model: UP3017 Model - zgodność z przepisami: UP3017t UWAGA: UWAGA oznacza ważną informację, pomocną w lepszym używaniu komputera. Copyright
4. Rysowanie krzywych
1. Operator plot y x \begin{tikzpicture} \draw[->] (-0.2,0) -- (4.2,0) node[right] {$x$}; \draw[->] (0,-1.2) -- (0,4.2) node[above] {$y$}; \draw (3,4) -- (3,3) plot coordinates{(2,3) (3,0) (4,3)}; \end{tikzpicture}
Transformacja współrzędnych geodezyjnych mapy w programie GEOPLAN
Transformacja współrzędnych geodezyjnych mapy w programie GEOPLAN Program GEOPLAN umożliwia zmianę układu współrzędnych geodezyjnych mapy. Można tego dokonać przy udziale oprogramowania przeliczającego
PROGRAMOWANIE GRAFIKI 2D W ŚRODOWISKU EMBARCADERO RAD STUDIO XE4 Z WYKORZYSTANIEM BIBLIOTEKI DirectX
Mgr inż. Witold BUŻANTOWICZ Dr inż. Jacek WARCHULSKI Dr inż. Marcin WARCHULSKI Wojskowa Akademia Techniczna PROGRAMOWANIE GRAFIKI 2D W ŚRODOWISKU EMBARCADERO RAD STUDIO XE4 Z WYKORZYSTANIEM BIBLIOTEKI
Programowanie, część III
9 kwietnia 2010 Biblioteki i podsystemy graficzne Biblioteki graficzne (ang. graphics library) Są potrzebne, aby można było programować grafikę w C++, ponieważ (niestety) we współczesnych systemach komputerowych
Tematy lekcji zajęć komputerowych klasa 5b grupa 1 i grupa 2
Tematy lekcji zajęć komputerowych klasa 5b grupa 1 i grupa 2 1 Program nauczania. Przedmiotowy system oceniania. Regulamin pracowni komputerowej. - 7 punktów regulaminu potrafi powiedzieć, czego się będzie
RYSUNEK TECHNICZNY I GEOMETRIA WYKREŚLNA INSTRUKCJA DOM Z DRABINĄ I KOMINEM W 2D
Politechnika Białostocka Wydział Budownictwa i Inżynierii Środowiska Zakład Informacji Przestrzennej Inżynieria Środowiska INSTRUKCJA KOMPUTEROWA z Rysunku technicznego i geometrii wykreślnej RYSUNEK TECHNICZNY
AutoCAD LT praca na obiektach rastrowych i nakładanie barw z palety RGB na rysunki.
AutoCAD LT praca na obiektach rastrowych i nakładanie barw z palety RGB na rysunki. Niniejsza instrukcja jest przewodnikiem po narzędziach służących do wstawiania i edycji obiektów rastrowych dostępnych
Wykorzystanie grafiki wektorowej do tworzenia elementów graficznych stron i prezentacji
Wykorzystanie grafiki wektorowej do tworzenia elementów graficznych stron i prezentacji grafika rastrowa a grafika wektorowa -13- P SiO 2 Grafika rastrowa - obraz zapisany w tej postaci stanowi układ barwnych
Plan wykładu. Wprowadzenie Program graficzny GIMP Edycja i retusz zdjęć Podsumowanie. informatyka +
Plan wykładu Wprowadzenie Program graficzny GIMP Edycja i retusz zdjęć Podsumowanie 2 Wprowadzenie Po co obrabiamy zdjęcia Obrazy wektorowe i rastrowe Wielkość i rozdzielczość obrazu Formaty graficzne
Stawiamy pierwsze kroki
Stawiamy pierwsze kroki 3.1. Stawiamy pierwsze kroki Edytory tekstu to najbardziej popularna odmiana programów służących do wprowadzania i zmieniania (czyli edytowania) tekstów. Zalicza się je do programów
CorelDraw - Edytor grafiki wektorowej
CorelDraw - Edytor grafiki wektorowej Rodzaje grafik Obecnie możemy spotkać się z dwoma rodzajami grafik: grafiką rastrową (zwaną również grafiką bitmapową) oraz grafiką wektorową. W grafice rastrowej
Wprowadzenie do QT OpenGL
Wprowadzenie do QT mgr inż. Michał Chwesiuk mgr inż. Tomasz Sergej inż. Patryk Piotrowski 1/21 - Open Graphics Library Open Graphics Library API pozwalające na wykorzystanie akceleracji sprzętowej do renderowania
Papyrus. Papyrus. Katedra Cybernetyki i Robotyki Politechnika Wrocławska
Katedra Cybernetyki i Robotyki Politechnika Wrocławska Kurs: Zaawansowane metody programowania Copyright c 2014 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu dotyczącego programowania
Jak dodać własny szablon ramki w programie dibudka i dilustro
Aby dodać własną ramkę otwórz moduł administracyjny dibudkaadmin.exe, wejdź do zakładki Ramki, tła, id i następnie Edycja. 1. Kliknij przycisk Dodaj ramkę 2. Określ wymiary nowej ramki Jeżeli dodajesz
Edytor tekstu OpenOffice Writer Podstawy
Edytor tekstu OpenOffice Writer Podstawy Cz. 3. Rysunki w dokumencie Obiekt Fontwork Jeżeli chcemy zamieścić w naszym dokumencie jakiś efektowny napis, na przykład tytuł czy hasło promocyjne, możemy w
Grafika na stronie www
Grafika na stronie www Grafika wektorowa (obiektowa) To grafika której obraz jest tworzony z obiektów podstawowych najczęściej lini, figur geomtrycznych obrazy są całkowicie skalowalne Popularne programy
Automatyczne tworzenie trójwymiarowego planu pomieszczenia z zastosowaniem metod stereowizyjnych
Automatyczne tworzenie trójwymiarowego planu pomieszczenia z zastosowaniem metod stereowizyjnych autor: Robert Drab opiekun naukowy: dr inż. Paweł Rotter 1. Wstęp Zagadnienie generowania trójwymiarowego
Komputery I (2) Panel sterowania:
Komputery I (2) Paweł Jamer Panel sterowania: Podstawowym miejscem z którego zarządzamy ustawieniami systemu Windows jest panel sterowania. Znaleźć tam możemy wszelkiego rodzaju narzędzia umożliwiające
GRAFIKA KOMPUTEROWA 10: Antyaliasing
GRAFIKA KOMPUTEROWA 10: Antyaliasing http://galaxy.agh.edu.pl/~mhojny Prowadzący: dr inż. Hojny Marcin Akademia Górniczo-Hutnicza Mickiewicza 30 30-059 Krakow pawilon B5/p.406 tel. (+48)12 617 46 37 e-mail:
INFORMATYKA KLASA IV
1 INFORMATYKA KLASA IV WYMAGANIA NA POSZCZEGÓLNE OCENY SZKOLNE 1. Komputer i programy komputerowe Posługiwanie się komputerem i praca z programem komputerowym wymienia przynajmniej trzy podstawowe zasady
Teraz bajty. Informatyka dla szkoły podstawowej. Klasa 4 Wymagania edukacyjne na poszczególne oceny szkolne dla klasy 4
1 Teraz bajty. Informatyka dla szkoły podstawowej. Klasa 4 Wymagania edukacyjne na poszczególne oceny szkolne dla klasy 4 1. Komputer i programy komputerowe Posługiwanie się komputerem i praca z programem
WYKŁAD 3 WYPEŁNIANIE OBSZARÓW. Plan wykładu: 1. Wypełnianie wieloboku
WYKŁ 3 WYPŁNINI OSZRÓW. Wypełnianie wieloboku Zasada parzystości: Prosta, która nie przechodzi przez wierzchołek przecina wielobok parzystą ilość razy. Plan wykładu: Wypełnianie wieloboku Wypełnianie konturu
SPOSOBY POMIARU KĄTÓW W PROGRAMIE AutoCAD
Dr inż. Jacek WARCHULSKI Dr inż. Marcin WARCHULSKI Mgr inż. Witold BUŻANTOWICZ Wojskowa Akademia Techniczna SPOSOBY POMIARU KĄTÓW W PROGRAMIE AutoCAD Streszczenie: W referacie przedstawiono możliwości
Inkscape. Menu. 1 SVG (ang. Scalable Vector Graphics) uniwersalny format dwuwymiarowej, statycznej i
Inkscape Inkscape jest opesourceowym programem do tworzenia grafiki wektorowej. Autorzy Inkscape a twierdzą, że jego możliwości porównywalne są z możliwościami oferowanymi przez programy takie, jak Illustrator,
5.4. Tworzymy formularze
5.4. Tworzymy formularze Zastosowanie formularzy Formularz to obiekt bazy danych, który daje możliwość tworzenia i modyfikacji danych w tabeli lub kwerendzie. Jego wielką zaletą jest umiejętność zautomatyzowania
Grażyna Koba. Grafika komputerowa. materiały dodatkowe do podręcznika. Informatyka dla gimnazjum
Grażyna Koba Grafika komputerowa materiały dodatkowe do podręcznika Informatyka dla gimnazjum Rysunki i animacje w Edytorze postaci 1. Rysunek w Edytorze postaci Edytor postaci (rys. 1.) jest częścią programu