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ć?
- 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?