Rysowanie w C# - po pixelu i "więcej"...

0

Wiem, że w C# są:

  • Graphics
  • Canvas
  • PictureBox
  • Bitmap

Które z nich nadają się najlepiej do "rysowania" (linie i inne kształty geometryczne + tekst różną czcionką, itp.) i późniejszego zapisania do pliku JPEG. Potrzebuję też dostęp (odczyt i zapis) do każdego pixela P(x,y) lub całej linii pixeli (coś jak scanline(y)). Co polecicie?

1

Co najlepiej nadaje się do rysowania:

  • kredki
  • kartka papieru
  • wystawa w galerii
  • ramka obrazu

Nie mówiąc o tym, że Canvas to jakiś wewnętrzny kontener UI w WPF.

Utwórz Bitmap i rysuj po nim przy użyciu Graphics.

1

Canvas, to płaszczyzna, na której umieszcza się kontrolki w WPF.
PictureBox, to kontrolka WinForms, za pomocą której można wyświetlić obrazek.
Bitmap, to mapa bitowa, zbiór danych o pikselach.
Graphics, to powierzchnia do rysowania.

Zatem tworzysz Bitmap, z niej potem Graphics, a następnie przy użyciu metod DrawCośtam rysujesz. Bitmap później możesz bezpośrednio zapisać do pliku, a możesz też wyświetlić w jakiejś kontrolce. Dostęp do pojedynczych pikseli też umożliwia, albo powoli przez metody: GetPixel/SetPixel, albo szybciej przy użyciu klasy BitmapData i opcjonalnie wskaźników.

0

dzienks ;)

0

Użyłem Bitmap+Graphics i w zasadzie działa (tzn. mam to co chciałem w zapisanej na dysku bitmapie), ale chciałbym, też żeby mógł w programie widzieć na bieżąco zmiany tejże bitmapy, tzn. w czasie rzeczywistym wszelkie zmiany (rysowanie różnych figur geometrycznych czy dodawanie tekstu) odbywało się na formie, na jakimś panelu, w groupboxie czy na picturebox : ) Bo na razie mam (na dysku) tylko efekt końcowy. Dodam, że chciałbym czyścić bitmapę (refresh), by np. zmienić dodawany tekst. Użyłem metody OnPaint dla pictureBox1, ale strasznie mulił program, nie mówiąc, że interfejs programu się źle wyświetlał i były problemy z odświerzaniem Form1.

Jak to zrobić?

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