1 Nazwa implementacji: Wyświetlanie figur - e-Swoi
Transkrypt
1 Nazwa implementacji: Wyświetlanie figur - e-Swoi
Nazwa implementacji: Wyświetlanie figur geometrycznych, wyświetlanie bitmap Autor: Łukasz Ciężki Opis implementacji: Implementacja zawiera zastosowanie funkcji rysowania figur geometrycznych i bitmap do wyświetlenia obrazu w systemie PAL z wykorzystaniem Arduino lub AVR Wyświetlaliśmy już tekst i zmienne, czemu nie wyświetlić prostych figur geometrycznych? Do wyboru mamy funkcje: TV.draw_line(x1,y1,x2,y2,kolor) - rysuje linie od punktu(x1,y1) do punktu (x2,y2), przy czym dla koloru 0 - czarny, 1 - biały, 2 - inwersja TV.draw_column(nr_kolumny,y1,y2,kolor) - rysuje kolumnę (pionową linię) od punktu y1 do y2 TV.draw_row(nr_linii,x1,x2,kolor) - rysuje wiersz (poziomą linię) od punktu x1 do x2 TV.draw_rect(x,y,wysokosc,szerokosc,kolor_obramowania,kolor_wypełnienia) - rysuje prostokąt na pozycji (x,y). Jeżeli kolor_wypełnienia jest nieokreślony, prostokąt nie ma wypełnienia TV.draw_circle(x,y,promien,kolor_obramowania,kolor_wypelnienia) - rysuje koło na pozycji (x,y). Jeżeli kolor_wypelnienia jest nieokreślony, koło nie ma wypełnienia (rysowany jest okrąg) TV.bitmap(x,y,nazwa_bitmapy) - rysuje określoną bitmapę Drobna uwaga - pozycja (x,y) kwadratu to punkt w jego lewym-górnym rogu, zaś pozycja (x,y) koła to jego środek. Przykładowo: chcemy narysować kwadrat, w którym jest wpisane koło. Kwadrat jest oddalony od lewej krawędzi ekranu o 30 pikseli i od górnej o 10 pikseli. Kwadrat ma bok równy 20 pikselom. #include <TVout.h> #include <fontALL.h> TVout TV; void setup() { TV.begin(PAL,120,96); } void loop() { TV.draw_rect(30,10,20,20,1); TV.draw_circle(40,20,10,1,1); for(;;); } Efekt: 1 Projekt “Strategia Wolnych i Otwartych Implementacji jako innowacyjny model zainteresowania kierunkami informatyczno-technicznymi oraz wspierania uczniów i uczennic w kształtowaniu kompetencji kluczowych” współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego. Zauważmy, że ekran jest rozciągnięty poziomo - wynika to z określonej przez nas roździelczości. Oczywiście możemy zmodyfikować ją, jednak musimy pamiętać o naszej pamięci RAM - przy wyższej roździelczości może jej zabraknąć. Przejdźmy teraz do bitmap - jedna bitmapa jest już zawarta w bibliotekach (TVOlogo), możemy ją teraz narysować: void loop() { TV.bitmap(0,0,TVOlogo); for(;;); } Efekt: 2 Projekt “Strategia Wolnych i Otwartych Implementacji jako innowacyjny model zainteresowania kierunkami informatyczno-technicznymi oraz wspierania uczniów i uczennic w kształtowaniu kompetencji kluczowych” współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego. Możemy równie dobrze rysować swoje bitmapy: void loop() { TV.bitmap(20,22,rufus); for(;;); } Efekt: 3 Projekt “Strategia Wolnych i Otwartych Implementacji jako innowacyjny model zainteresowania kierunkami informatyczno-technicznymi oraz wspierania uczniów i uczennic w kształtowaniu kompetencji kluczowych” współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego. Bitmapy można albo pisać (co jest dość pracochłonne) albo rysować w programie graficznym, a następnie konwertować bitmapę MSB LSB Pozostałe funkcje biblioteki TVout do rysowania: • set_pixel(x,y,kolor) - ustawia piksel o pozycji (x,y) na dany kolor (0 - czarny, 1 - biały, 2 - inwersja) • get_pixel(x,y) - zwraca wartość koloru piksela o pozycji (x,y) • fill(kolor) - wypełnia cały ekran jednym kolorem • shift(odleglosc,kierunek) - przesuwa ekran o odleglosc w wyznaczonym kierunku (góra - 0, dół - 1, lewo - 2, prawo - 3 4 Projekt “Strategia Wolnych i Otwartych Implementacji jako innowacyjny model zainteresowania kierunkami informatyczno-technicznymi oraz wspierania uczniów i uczennic w kształtowaniu kompetencji kluczowych” współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego.