WinForms 15 – Bitmapi a Grafika

V dnešnom diely, ktorý je prvý zo série plus dielov sa pozrieme na funkčnosť tried Bitmap a Graphics.

Triedy Bitmap a Graphics slúžia na prácu z (ako už ich názov napovedá) grafikou a obrázkami. Keď hovoríme o grafike, myslíme tým v tomto prípade jednoduchý 2D statický obrázok. Dnes si ukážeme ako tieto triedy využiť.

Bitmap

Trieda Bitmap má viacero konštruktorov. Ten najzákladnejší dokáže vytvoriť novú Bitmapu z iného obrázku. Ďalšie ponúkajú tvorbu Bitmapi zo súboru, alebo streamu. Dôležitý je tiež konštruktor, ktorý vytvorí úplne novú prázdnu bitmapu len zadaním jej rozmerov.

Dôležitými metódami na prácu z pixelmi sú GetPixel a SetPixel – tie vám dovoľujú upravovať obrázok nastavením farby na konkrétnych koordinátoch. Metóda GetThumbnail vám vráti zmenšený náhľadový obrázok a metódy GetHBitmapGetHIcon vám vrátia ukazovateľ na GDI obrázok a ikonu. Samozrejme metóda Save vám dovoľuje tento obrázok uložiť.

Bitmap bmp = new Bitmap(256,256);
for (int x = 0; x < 256; x++)
{
   for (int y = 0; y < 256; y++)
   {
       bmp.SetPixel(x,y,Color.FromArgb(x,0,y));
   }
}
pictureBox1.Image = bmp;

Graphics

Trieda Graphics nemá žiadny konštruktor, jej objekt sa však dá vytvoriť pomocou statickej metódy FromImage. Jej parameter môže byť buď Image alebo Bitmap.

Do Graphics objektu sa následne dá efektívne vykreslovať. Metóda Clear je určená na vyčistenie obrázku jednou farbou. Pomocou Draw metód následne môžete vykresliť ľubovolný obrázok do tohto objektu. Ako objekt kreslenia môže poslúžiť iný obrázok, čiara, krivka, kružnica, elipsa, obdĺžnik, iný ručne definovaný tvar, alebo text. Tým to však nekončí. Tieto tvary sú totiž väčšinou len obrysy a niesu vyplnené. Na ich vyplnenie slúžia Fill funkcie – tie je opäť možné použiť na vykreslenie kružníc, štvorcov a iných tvarov.

Využitie triedy Graphics sme si už ukázali v diely tlačenie 2, no ukážeme si ho ešte v jednom tutoriáli, ktorý na našom webe plánujeme.

using (Graphics gr = Graphics.FromImage(bmp))
{
   gr.FillEllipse(Brushes.White, new RectangleF(55, 55, 100, 100));
}

pictureBox1.Image = bmp;

To by stačilo v tomto kratšom diely, a nabudúce sa pozrieme tvorbu vlastných ovládacích prvkov.

Pridajte Komentár

Vaša e-mailová adresa nebude zverejnená.

Scroll to Top