Formaty plików graficznych - wprowadzenie



Podobne dokumenty
Do obsługi plików BMP należy stworzyć klasę przechowującą zawartość obrazu i udostępniającą następujące metody:

Bitmapy - format i zastosowanie. Podstawowy format plików bitmapowych, dogodność zastosowania bitmap w prostych animacjach 2D.

Laboratorium Grafiki Komputerowej i Animacji. Ćwiczenie II. Formaty plików graficznych

HISPASEC. Praktyczne podejście do testowania bezpieczeństwa implementacji obsługi formatów danych. by Gynvael Coldwind

Interfejs graficzny w systemie Windows (GDI - Graphics Device Interface)

Format BMP okiem hakera

OBRAZY ZDJĘĆ LOTNICZYCH W POSTACI CYFROWEJ JAKO WARSTWA INFORMACYJNA W GIS WSPIERAJĄCYM GOSPODARKĘ PRZESTRZENIĄ W GMINIE.

Architektura komputerów. dr inż. Sławomir Samolej D108 A, tel: , WWW: ssamolej.prz-rzeszow.

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

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

Reprezentacje danych multimedialnych - grafika. 1. Terminologia 2. Obrazy czarno-białe 3. Obrazy kolorowe 4. Paleta 5.

Laboratorium Podstaw Informatyki Strona 1. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Ćwiczenie Graf

Podstawy grafiki komputerowej. Teoria obrazu.

Formaty obrazów rastrowych biblioteki PBM

// Potrzebne do memset oraz memcpy, czyli kopiowania bloków

Grafika komputerowa. Dla DSI II

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1

Formaty plików graficznych

ANALIZA I INDEKSOWANIE MULTIMEDIÓW (AIM)

external Data Representation

Analiza i Przetwarzanie Obrazów. Szyfrowanie Obrazów. Autor : Mateusz Nawrot

INFORMATYKA WSTĘP DO GRAFIKI RASTROWEJ

Rozdział 7. Przedstawienie formatu graficznego BMP.

GRAFIKA. Rodzaje grafiki i odpowiadające im edytory

Podstawy Informatyki Wykład V

Wykład II. Reprezentacja danych w technice cyfrowej. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

Waldemar Izdebski - Wykłady z przedmiotu SIT / Mapa zasadnicza 30

Podstawy programowania w języku C dla środowiska Windows

Grafika Komputerowa Wykład 1. Wstęp do grafiki komputerowej Obraz rastrowy i wektorowy. mgr inż. Michał Chwesiuk 1/22

Wykład VI. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

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

1 Temat: Wprowadzenie do biblioteki OpenCV

Grafika komputerowa dziedzina informatyki zajmująca się wykorzystaniem technik komputerowych do celów wizualizacji artystycznej oraz wizualizacji i

Podstawy przetwarzania obrazów teledetekcyjnych. Format rastrowy

Wymagania edukacyjne na ocenę z informatyki klasa 3

Rysowanie punktów na powierzchni graficznej

KRYPTOGRAFIA I OCHRONA DANYCH PROJEKT

Materiały dla studentów pierwszego semestru studiów podyplomowych Grafika komputerowa i techniki multimedialne rok akademicki 2011/2012 semestr zimowy

Cała prawda o plikach grafiki rastrowej

Techniki wizualizacji. Ćwiczenie 2. Obraz cyfrowy w komputerze

Podstawy grafiki komputerowej

GRAFIKA RASTROWA GRAFIKA RASTROWA

Grafika rastrowa (bitmapa)-

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

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

Procedura okna: LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam);

Gimp Grafika rastrowa (konwersatorium)

Grafika komputerowa. Oko posiada pręciki (100 mln) dla detekcji składowych luminancji i 3 rodzaje czopków (9 mln) do detekcji koloru Żółty

Pliki. Informacje ogólne. Obsługa plików w języku C

Cechy formatu PNG Budowa bloku danych Bloki standardowe PNG Filtrowanie danych przed kompresją Wyświetlanie progresywne (Adam 7)

Metody komputerowe w obliczeniach inżynierskich

Programowanie na poziomie sprzętu. Programowanie w Windows API

Python: JPEG. Zadanie. 1. Wczytanie obrazka

Grafika na stronie www

Język C zajęcia nr 11. Funkcje

Warstwa Rysunek bitmapowy Rysunek wektorowy

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. informatyka +

Ćwiczenie 9 - Obsługa skanera płaskiego (TWAIN)

Wybrane zagadnienia w pracy z danymi rastrowymi w ArcGIS Marcin Paź Esri Polska

utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy,

Kurs grafiki komputerowej Lekcja 2. Barwa i kolor

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI

Sun RPC/XDR 10. listopada Dariusz Wawrzyniak (IIPP) 1

Katalog dobrych praktyk digitalizacyjnych dla obiektów bibliotecznych

Baner internetowy w standardzie GIF - metoda tworzenia tandemem aplikacji Illustrator - ImageReady.

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

Percepcja obrazu Podstawy grafiki komputerowej

Formaty plików graficznych

Formaty plików graficznych

Sun RPC/XDR. Dariusz Wawrzyniak 1

M O DEL T E K ST O W Y DANYCH G RAFIC ZNYCH I M O ŻLIW O ŚC I JEG O ZASTO SO W A N IA W FO TOGRAM ETR II C Y FR O W EJ

external Data Representation

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Księgarnia internetowa Lubię to!» Nasza społeczność

Diagnostyka obrazowa

Przygotowanie plików do druku

1. Reprezentacja obrazu w komputerze

INFORMATYKA Studia Niestacjonarne Elektrotechnika

Diagnostyka obrazowa

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

AUTOVIEW Katalog sylwetek pojazdów. Instrukcja instalacji i wykorzystania w programach Cyborg Idea. C.A.R. Crash Analyse Ratschbacher GmbH

Kodowanie informacji. Kody liczbowe

Przetwarzanie obrazów cyfrowych

Język ludzki kod maszynowy

FORMATY PLIKÓW GRAFICZNYCH

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

Funkcje zawarte w bibliotece < io.h >

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Języki programowania. Przetwarzanie plików amorficznych Konwencja języka C. Część siódma. Autorzy Tomasz Xięski Roman Simiński

Architektura komputerów

CEL zapoznanie z programem do tworzenia rysunków i ukazanie możliwości Edytora obrazów do sporządzania rysunków i ikon.

Zamiana reprezentacji wektorowej na rastrową - rasteryzacja

1. Przypisy, indeks i spisy.

Funkcje zawarte w bibliotece < io.h >

Programowanie współbieżne. Tworzenie i obsługa semaforów oraz wątków przy użyciu funkcji Windows API.

NOTATNIK KONSTRUKTORA

Transkrypt:

Formaty plików graficznych - wprowadzenie Obraz graficzny jest dwuwymiarową tablicą pikseli, zwana czasem rastrem. Kolor piksela może być reprezentowany w następujący sposób: Dla obrazów monochromatycznych 1 bit (czarny/biały) Dla obrazów true color dla każdego piksela określane są 3 składowe: czerwona (R), zielona (G), i niebieska (B). Gdy wartość każdej składowej reprezentowana jest przez 1 bajt, to każda barwa może być reprezentowana w 256 odcieniach jasności, co daje 16777216 (ponad 16 mln) W przypadku obrazu opartego na palecie, wartości poszczególnych pikseli są indeksami tablicy RGB, zwanej paletą kolorów. Liczba przypadających na jeden piksel bitów zależy od liczby kolorów w palecie. Typowa paleta może zawierać 16 (4 bity na piksel) lub 256 kolorów (8 bitów na piksel). 1

Formaty plików graficznych - wprowadzenie Minimum informacji konieczne do wyświetlenia obrazu na ekranie: 1. Rozmiar rysunku (szerokość i wysokość) 2. Liczba bitów na piksel (głębokość) 3. Rodzaj grafiki (monochromatyczna / true color / paleta kolorów) 4. Paletę kolorów, jeśli obraz jest opisany na palecie 5. Dane graficzne (tablica pikseli) 2

Formaty plików graficznych - wprowadzenie Typowa struktura pliku graficznego: Nagłówek Paleta kolorów (jeśli jest) Dane graficzne (tablica pikseli) 3

Formaty plików graficznych - wprowadzenie Różnice w formatach plików graficznych: Kolejność umieszczonych w nagłówku informacji może być różna dla różnych formatów plików. Niektóre formaty, przystosowane do konkretnej karty graficznej, nie muszą zawierać palety, a jedynie tablice pikseli. Linie obrazu mogą być ułożone w kolejności od góry do dołu lub od dołu do góry. Jeżeli wartości pikseli są składowymi RGB, to kolejność zapisu tych składowych może być różna. Wartości pikseli mogą być zapisane w postaci pakietów lub planów obrazu. W przypadku pakietów bity, odpowiadające kolejnym pikselom, są zapisywane jeden za drugim. Jeżeli obraz składa się z planów, bity poszczególnych pikseli są zapisywane na tej samej pozycji w kolejnych planach. Najmniej znaczące bity pikseli obrazu znajdują się w jednym planie, a następnym planie są bity bardziej znaczące, itd. Dane graficzne mogą być skompresowane. 4

Formaty plików graficznych mapy bitowe Dostępne w systemie Windows mapy bitowe: Mapy bitowe niezależne od sprzętu (DIB Device-Independent Bitmap od wersji 3.0), dostosowane do wyświetlania na dowolnym urządzeniu rastrowym. Mapy bitowe zależne od sprzętu (DDB Device-Dependent Bitmap), dostosowane do wyświetlenia na konkretnym urządzeniu wyjściowym. Metoda wyświetlania plików graficznych w Windows: Konwersja dowolnego typu graficznego na mapę bitową DIB Przekształcenie mapy DIB w mapę DDB Przesłanie mapy DDB na konkretne urządzenie wyświetlające 5

Struktura pliku typu BMP: Formaty plików graficznych mapy bitowe BITMAPFILEHEADER BITMAPINFO: BITMAPINFOHEADER RGBQUAD BITMAPV4HEADER (Win NT4/Win 95) / BITMAPV5HEADER (Win NT5/Win 98) TABLICA PIKSELI 6

Formaty plików graficznych mapy bitowe Struktura nagłówka BITMAPFILEHEADER: typedef struct tagbitmapfileheader { // bmfh WORD bftype; DWORD bfsize; WORD bfreserved1; WORD bfreserved2; DWORD bfoffbits; } BITMAPFILEHEADER; Pole Wielkość Opis bftype WORD Dwa bajty "BM" (od słów: mapa bitowa) bfsize DWORD Całkowita wielkość pliku bfreserved1 WORD Wartość 0 bfreserved2 WORD Wartość 0 bfoffbits DWORD Odległość od początku pliku do miejsca, w którym zaczynają się bity mapy bitowej. 7

Formaty plików graficznych mapy bitowe Struktura nagłówka BITMAPINFO: typedef struct tagbitmapinfo { // bmi BITMAPINFOHEADER bmiheader; RGBQUAD bmicolors[1]; } BITMAPINFO; Struktura nagłówka BITMAPINFOHEADER: typedef struct tagbitmapinfoheader{ // bmih DWORD bisize; LONG biwidth; LONG biheight; WORD biplanes; WORD bibitcount; DWORD bicompression; DWORD bisizeimage; LONG bixpelspermeter; LONG biypelspermeter; DWORD biclrused; DWORD biclrimportant; } BITMAPINFOHEADER; 8

Formaty plików graficznych mapy bitowe Struktura nagłówka BITMAPINFOHEADER (interpretacja pól): Pole Wielkość Opis bisize DWORD Wielkość tej struktury w bajtach biwidth LONG Szerokość mapy bitowej w pikselach biheight LONG Wysokość mapy bitowej w pikselach biplanes WORD Wartość 1 bibitcount WORD Liczba bitów koloru przypadająca na jeden piksel (1,4,8 lub 24) bicompression DWORD Metoda kompresji (0, gdy nie ma kompresji) bisizeimage DWORD Wielkość mapy bitowej w bajtach (potrzebne jedynie w przypadku map skompresowanych) bixpelspermeter LONG Rozdzielczość pozioma w pikselach na metr biypelspermeter LONG Rozdzielczość pionowa w pikselach na metr biclrused WORD Liczba kolorów użyta w obrazie biclrimportant DWORD Liczba istotnych kolorów użyta w obrazie 9

Formaty plików graficznych mapy bitowe Struktura nagłówka RGBQUAD: typedef struct tagrgbquad { // rgbq BYTE rgbblue; BYTE rgbgreen; BYTE rgbred; BYTE rgbreserved; } RGBQUAD; Pole rgbblue rgbgreen rgbred rgbreserved Wielkość BYTE BYTE BYTE BYTE Opis Intensywność barwy niebieskiej Intensywność barwy zielonej Intensywność barwy czerwonej Wartość 0 10

Formaty plików graficznych mapy bitowe Liczbę struktur RGBQUAD wyznacza zwykle pole bibitcount: Dla koloru 1 bitowego: Dla kolorów 4 bitowych: Dla kolorów 16 bitowych: 2 struktury 16 struktur 256 struktur Gdy jednak pole biclrused ma wartość różną od zera to określa ono liczbę kolorów zdefiniowanych w palecie. Po tablicy barw w pliku znajduje się obraz mapy bitowej zakodowany w następujący sposób: Tablica zaczyna się od dolnego wiersza pikseli Piksel zajmuje 1, 4, 8 lub 24 bity W przypadku monochromatycznych map bitowych, w których 1 bit koloru przypada na piksel, pierwszy piksel w każdym wierszu odpowiada najbardziej znaczącemu bitowi pierwszego bajtu w każdym wierszu. Jeśli wartość bitu wynosi 0, kolor piksela należy odczytać z pierwszej struktury RGBQUAD znajdującej się w tablicy barw. Jeżeli wartość bitu wynosi 1, to kolor jest zakodowany w drugiej strukturze RGBQUAD. 11

Formaty plików graficznych mapy bitowe W przypadku 16-kolorowych map bitowych z 4 bitami koloru na piksel, pierwszy piksel w każdym wierszu odpowiada czterem najbardziej znaczącym bitom pierwszego bajtu każdego wiersza. W celu odkodowania koloru piksela używamy pobranej 4-bitowej wartości jako indeksu do tablicy barw. Tablica barw liczy 16 elementów. W 256-kolorowych mapach bitowych każdy bajt odpowiada jednemu pikselowi. Kolor piksela odczytujemy używając wartości 8-bitowej jako indeksu do tablicy barw, która liczy tym razem 256 elementów. Jeśli obraz składa się z pikseli kodowanych na 24 bitach koloru, to każdy zbiór kolejnych trzech bajtów odpowiada wartości RGB piksela. W tym przypadku nie ma tablicy barw, chyba że pole biclrused struktury BITMAPINFOHEADER jest różne od 0. W każdym przypadku, każdy wiersz danych mapy bitowej zawiera wielokrotność 4 bajtów. Jeżeli nie pasuje to do rzeczywistych wymiarów obrazu, to wiersz jest uzupełniany, aby ten warunek został spełniony. 12

Formaty plików graficznych wyświetlanie map bitowych Etapy wyświetlania plików graficznych: Wczytanie zawartości pliku do pamięci komputera Przekształcenie wczytanych danych w format DIB Przekształcenie wczytanych danych w format DDB Przesłanie obrazu do okna programu 13

Formaty plików graficznych wyświetlanie map bitowych Metoda wczytania pliku DIB: Odczytanie z pliku struktury BITMAPFILEHEADER (Pole struktury o nazwie bfsize zawiera rozmiar pliku). Na podstawie danych ze struktury BITMAPFILEHEADER należy zaalokować w pamięci komputera bufor o odpowiednim rozmiarze i przekopiować do niego zawartość pliku. Ustawić uprzednio zdefiniowane wskaźniki na początek pól BITMAPFILEHEADER, BITMAPINFOHEADER, BITMAPINFO (wskaźniki zastosowane zostaną przez funkcje przetwarzające bitmapę). Z zastosowaniem funkcji CreateDIBitmap() przekształcić dane z pliku DIB w bitmapę DDB Zamknąć plik dyskowy z danymi 14

Formaty plików graficznych wyświetlanie map bitowych Funkcja CreateDIBitmap(): HBITMAP CreateDIBitmap ( HDC hdc, // uchwyt do kontekstu urządzenia CONST BITMAPINFOHEADER *lpbmih, // wskaźnik do struktury // BITMAPINFOHEADER przetwarzanej DIB DWORD fdwinit, // flaga inicjalizacji CONST VOID *lpbinit,// wskaźnik do początku tablicy pikseli CONST BITMAPINFO *lpbmi, // wskaźnik do struktury BITMAPINFO // przetwarzanej DIB UINT fuusage // tryb konwersji kolorów ); 15

Formaty plików graficznych wyświetlanie map bitowych Uchwyt do bitmapy: static HBITMAP mhbmp=0; if(mhbmp) { DeleteObject(mHBmp); mhbmp=0; } HBITMAP CreateDIBitmap( ); 16

Formaty plików graficznych wyświetlanie map bitowych Uchwyt do kontekstu urządzenia: HDC mhdc; // uchwyt do kontekstu urządzenia mhdc=getdc(hwnd); HBITMAP CreateDIBitmap( mhdc, ); ReleaseDC(hwnd,mHDC); 17

Formaty plików graficznych wyświetlanie map bitowych Flaga inicjalizacji: HBITMAP CreateDIBitmap( CBM_INIT, ); 18

Formaty plików graficznych wyświetlanie map bitowych Tryb konwersji kolorów: HBITMAP CreateDIBitmap( DIB_PAL_COLORS, // DIB_RGB_COLORS ); 19

Formaty plików graficznych wyświetlanie map bitowych Metoda wyświetlenia bitmapy DDB: Spowodować odświeżenie okna (funkcja InvalidateRect()) Utworzyć kontekst urządzenia pamięciowego zgodny z kontekstem okna (funkcja CreateCompatibleDC()) Przyłączyć do utworzonego kontekstu bitmapę DDB (makrorozwinięcie SelectBitmap()) Przesłać bitmapę pomiędzy kontekstami (funkcja BitBlt()) Odłączyć bitmapę od pamięciowego kontekstu urządzenia Usunąć kontekst urządzenia pamięciowego 20

Formaty plików graficznych wyświetlanie map bitowych Unieważnienie zawartości okna wymuszenie wyrysowania na nowo zawartości okna: InvalidateRect(hwnd,NULL,TRUE); Utworzenie kontekstu urządzenia pamięciowego zgodnego z kontekstem okna: HDCPaint=BeginPaint(hwnd,&PaintStruct); mmemdc=createcompatibledc(hdcpaint); 21

Formaty plików graficznych wyświetlanie map bitowych Przyłączenie bitmapy DDB od pamięciowego kontekstu urządzenia: mhbitmapold=selectbitmap(mmemdc,mhbmp); 22

Formaty plików graficznych wyświetlanie map bitowych Przesłanie bitmapy pomiędzy kontekstami BOOL BitBlt ( HDC hdcdest, // uchwyt kontekstu urządzenia docelowego int nxdest, // współrzędna x lewego górnego rogu obrazu // docelowego int nydest, // współrzędna y lewego górnego rogu obrazu // docelowego int nwidth, // szerokość obrazu docelowego int nheight, // wysokość obrazu docelowego HDC hdcsrc, // uchwyt kontekstu urządzenia źródłowego int nxsrc, // współrzędna x lewego górnego rogu obrazu // źródłowego int nysrc, // współrzędna y lewego górnego rogu obrazu // źródłowego DWORD dwrop // kod operacji rastrowej np.:srccopy ); 23

Formaty plików graficznych wyświetlanie map bitowych Odłączenie bitmapy od pamięciowego kontekstu urządzenia: SelectBitmap(mMemDC,mHBitmapOld); Usunięcie pamięciowego kontekstu urządzenia: DeleteDC(mMemDC); 24

Formaty plików graficznych program BmpView 25

Pliki nagłówkowe: Formaty plików graficznych program BmpView #include <windowsx.h> // makro SelectBitmap() #include <stdio.h> // operacje na plikach #include <stdlib.h> // alokacja pamięci 26

Nowe zmienne lokalne: Formaty plików graficznych program BmpView LRESULT CALLBACK WndProc(HWND hwnd, UINT imsg, WPARAM wparam,lparam lparam) {HDC HDCPaint; // uchwyt obszaru kontekstu // urządzenia klienta PAINTSTRUCT PaintStruct; // informacja o malowaniu // Zestaw danych do obsługi standardowego okna "Otwórz plik"; char Filter[]="Mapy bitowe (*.bmp)\0*.bmp\0"; // filtr wyboru plików char FileName[256]={'\0'}; // tablica na nazwę // otworzonego pliku OPENFILENAME OFName; // struktura obsługująca // okno "Otwórz plik" FILE *plik; // uchwyt pliku 27

Formaty plików graficznych program BmpView Nowe zmienne lokalne (cd): // Zestaw danych, które mogą być przydtne do przetwarzania // i wczytywania pliku DIB static BITMAPFILEHEADER *BmpFilHeadPtr; static BITMAPINFOHEADER *BmpInfHeadPtr; static BITMAPINFO *BmpInfPtr; static unsigned char *BmpDataPtr; HDC mhdc; // uchwyt do kontekstu urządzenia HDC mmemdc; // uchwyt do pamięciowego kontekstu urządzenia static int mbmp_width; static int mbmp_height; // Uchwyty do bitmap DDB: HBITMAP mhbitmapold; static HBITMAP mhbmp=0; 28

Formaty plików graficznych program BmpView Obsługa standardowego okna Otwórz: case WM_COMMAND: switch(loword(wparam)) { case ID_PLIK_OTWORZ:// Załaduj do pamięci bitmapę memset(&ofname,0,sizeof(openfilename)); OFName.lStructSize=sizeof(OPENFILENAME); OFName.hwndOwner=hwnd; OFName.lpstrFilter=Filter; OFName.lpstrFile=FileName; OFName.nMaxFile=sizeof(FileName); FName.Flags=OFN_FILEMUSTEXIST OFN_HIDEREADONLY; OFName.lpstrDefExt="bmp"; if(getopenfilename(&ofname)==false)return 0; // Okno komunikatu: MessageBox(hwnd,"Za chwilę będzie ładowana do pamięci bitmapa","przeglądarka...",mb_ok MB_ICONINFORMATION); if(mhbmp){ DeleteObject(mHBmp);mHBmp=0; } 29

Formaty plików graficznych program BmpView Struktura obsługi komunikatów: switch(imsg) { case WM_COMMAND: switch(loword(wparam)) {case ID_PLIK_OTWORZ: // Załaduj do pamięci bitmapę, utwórz DDB return 0; case ID_PLIK_KONIEC: }return 0; return 0; case WM_DESTROY: return 0; case WM_PAINT: // Wyświetlaj bitmapę, jeśli została załadowana return 0; default:return DefWindowProc(hwnd,iMsg,wParam,lParam); }} 30