Poniższy artykuł pochodzi z serii Przygotowań do egzaminu 70-536.
Dzisiaj wyjątkowo krótki wpis. Powiemy sobie o tym jak wyświetlić, stworzyć i zapisać rysunek. Żeby nie przedłużać wstępu od razu lecimy z tematem.
The Image and Bitmap Classes
System.Drawing.Image jest klasą abstrakcyjną która umożliwia nam tworzenie, ładowanie, modyfikacje oraz zapis obrazka do formatu .bmp, .jpg oraz .tif. Klasy tej można użyć do stworzenia rysunku, wykresu, zmiany rozmiaru obrazka czy też dodania np. znaku wodnego itd.
Klasa Image jest abstrakcyjna dlatego do stworzenia jej instancji musimy użyć metody Image.FromFile (która przyjmuje ścieżkę do pliku jako parametr) lub metody Image.FromStream (która przyjmuje obiekt System.IO.Stream jako parametr). Można również skorzystać z dwóch klas które dziedziczą po Image: System.Drawing.Bitmap dla obrazów statycznych oraz System.Drawing.Imaging.Metafile dla animacji.
Klasa Bitmap jest najczęściej używaną klasa do pracy na nowych lub istniejących już obrazach. Różne konstruktory pozwalają na utworzenie bitmapy z istniejących już obrazów, plików, strumieni plików czy też stworzenie pustej bitmapy o określonej wysokości i szerokości. Klasa Bitmap zawiera dwie szczególnie przydatne metody których nie zawiera klasa Image:
GetPixel – zwraca kolor obiektu opisującego szczegółowo dany piksel w obrazku. Pikselem jest pojedyncza kropka na rysunku opisana kolorami RGB.
SetPixel – ustawia piksel o określonym kolorze.
Do bardziej złożonej edycji obrazu należałoby użyć obiektu Graphics.
Jak wyświetlić rysunek
No nareszcie jakaś część praktyczna ;) Aby wyświetlić w Windows Forms rysunek należy użyć kontrolki PictureBox. Nic skomplikowanego, spójrzcie na przykład:
1: // Pamiętajmy o zmianie ścieżki
2: Image i = Image.FromFile(@"picture.bmp");
3: // Kontrolka PictureBox nazywa się tutaj pictureBox1
4: // sorrki ale wole wspomniec bo może ktoś jest po nieprzespanej nocy ;)
5: pictureBox1.BackgroundImage = i;
Dla obiektu typu Bitmap nie ma żadnej różnicy…wystarczy zastąpić Image na Bitmap, reszta bez zmian.
Alternatywnie do stworzenie tła dla formularza można posłużyć się metodą Graphics.DrawImage, Metoda ta ma 30 przeciążeń także jest szeroki wybór do określenia lokalizacji i wymiarów obrazka. Poniższy przykład demonstruje ustawnie tła które jest niezależne od wymiarów formularza, spójrzmy:
1: Bitmap bm = new Bitmap(@"picture.jpg");
2: Graphics g = this.CreateGraphics();
3: g.DrawImage(bm, 1, 1, this.Width, this.Height);
Jak stworzyć i zapisać rysunek?
Spójrzmy na przykład bo wszystko jest tutaj intuicyjne. Warto dodać, że kod poniżej można normalnie uruchomić w konsoli i wszystko pójdzie gdyż nie wyświetlamy grafiki tylko ją tworzymy i zapisujemy. Należy pamiętać również o dodaniu referencji do System.Drawing i dodaniu przestrzeni nazw System.Drawing.Drawing2D, System.Drawing.Imaging.
1: Bitmap bm = new Bitmap(600, 600);
2: Graphics g = Graphics.FromImage(bm);
3: Brush b = new LinearGradientBrush(
4: new Point(1, 1), new Point(600, 600),
5: Color.White, Color.Red);
6: Point[] points = new Point[]
7: {new Point(10, 10),
8: new Point(77, 500),
9: new Point(590, 100),
10: new Point(250, 590),
11: new Point(300, 410)};
12: g.FillPolygon(b, points);
13: bm.Save("bm.jpg", ImageFormat.Jpeg);
Jak używać ikon?
Ikony w .Net Framework to przezroczyste bitmapy o określonych rozmiarach. Standartowo maja one rozmiar 40 x 40 i są zawarte w klasie SystemIcon. Aby dodać ikonę np. do formularza należy posłużyć się metodą Graphics.DrawIcon lub Graphics.DrawIconUnstretched. Przykład zastosowania poniżej:
1: Graphics g = this.CreateGraphics();
2: g.DrawIcon(SystemIcons.Question, 40, 40);
To tyle na dzisiaj. Tak jak obiecałem krótko i na temat. Następny artykuł będzie o formatowaniu tekstu a napisze nam go Kamil ;)
Dzięki za poświęcenie czasu.
Kolejny artykuł z serii to 70-536: Formatting Text