[C#] Klasa Bitmap

0

Witam. Zachciało mi się napisać programik, który będzie operował na obrazkach... I mam problemy:

Ładuję plik jpg do obiektu typu Bitmap - wszystko w porządku.
Mam ochotę (przykładowo) narysować na środku tego obrazka prostokąt. Klasa Bitmap udostępnia mi jedynie metodę SetPixel(). Piszę więc coś w tym stylu:

            for (int i = 50; i < 500; i++)
            {
                for (int j = 50; j < 500; j++)
                {
                    bmp.SetPixel(i, j, Color.Blue);
                }
            }

Oczywiście, w analogiczny sposób mógłbym sobie stworzyć funkcje do rysowania prostych, krzywych, kółek, whatever. Działa. Gorzej z wydajnością - wykonanie tego trwa parę sekund.

1. Kreślenie po bitmapie - jak inaczej można to zrealizować?

  1. Docelowo chciałbym zrobić coś na wzór narzędzia "różdżki" w Photoshopie - zamalowywanie wszystkich pixeli o podobnym kolorze. Do tego potrzebny mi szybki dostęp do poszczególnych pixeli. Powiedzcie mi, czy ma to sens:
  • pominięcie klasy Bitmap i użycie zamiast tego dwuwymiarowej tablicy klasy Color (albo wprost - tablicy wartości czterobajtowych) - wówczas, jak przetworzyć klasę Bitmap do postaci takiej tablicy? (Pomijając metodę jak powyżej - dwie zagnieżdżone pętle for, i przepisywanie wartości pixel po pixelu)

  • jeśli to nie ma sensu - może w .NET są jeszcze jakieś fajne klasy do operowania na obrazach, do których się nie dokopałem?

0
Bitmap b = new Bitmap(10, 10);
Graphics g = Graphics.FromImage(b);
// i teraz masz g. ... co tam chcesz

1 użytkowników online, w tym zalogowanych: 0, gości: 1