Prymitywy LINK->Przykłady z kursu.
Aby wyświetlać proste linie, trójkąty, prostokąty, okręgi, i inne figury geometryczne, nie potrzebujemy wyświetlać bitmap wystarczą nam figury geometryczne, tak zwane prymitywy.
#include <allegro5/allegro_primitives.h> - plik nagłówkowy.
al_init_primitives_addon(); - inicjowanie prymitywów.
al_shutdown_primitives_addon(); - Wyłączenie prymitywów odbywa się automatycznie przy wyjściu z programu, ale możemy to zrobić w każdej chwili podczas jego działania.
Kolory prymitywów możemy określić wcześniej za pomocą (np. ALLEGRO_COLOR kolor = al_map_rgb( 0, 0, 255); lub bezpośrednio w funkcji- al_draw_line( 10, 15, 80, 90, al_map_rgba( 0, 0, 255, 128), 4); // tu linia szeroka na 4 piksele, plus dodanie przezroczystości (czwarty parametr).
.......................................................................................................................................
Rysuje prosty odcinek między dwoma punktami.
al_draw_line( x1, y1, x2, y2, kolor, szerokosc);
Parametry:
x1, y1, x2, y2 - początek i koniec linii. (liczby typu float).
kolor - kolor linii.
szerokosc - szerokość linii. (liczba typu float).
Przykład:
al_draw_line( 10, 15, 80, 90, al_map_rgba( 0, 255, 0, 128), 4);
....................................................................................................................................
Rysuje trójkąt (linie) pomiędzy trzema punktami.
al_draw_triangle( x1, y1, x2, y2, x3, y3, kolor, szerokosc);
Parametry:
x1, y1, x2, y2, x3, y3 - trzy punkty trójkąta.(liczby typu float).
kolor - kolor linii trójkąta.
szerokosc - szerokość linii. (liczba typu float).
Przykład:
al_draw_triangle(100, 15, 150, 25, 125, 80, al_map_rgb(255, 0, 0), 8);
..................................................................................................................................
Rysuje wypełniony trójkąt.
al_draw_filled_triangle(x1,y1,x2,y2,x3,y3,kolor);
Parametry:
x1, y1, x2, y2, x3, y3 - trzy punkty trójkąta.(liczby typu float).
kolor - kolor trójkąta.
Przykład:
al_draw_filled_triangle(190, 15, 250, 76, 175, 80, al_map_rgb(0,0,255));
.................................................................................................................................
Rysuje prostokąt (linie) pomiędzy czterema punktami.
al_draw_rectangle(x1,y1,x2,y2,kolor,szerokosc);
Parametry:
x1, y1, x2, y2 - lewy górny i prawy dolny punkt prostokąta.(liczby typu float).
kolor - kolor linii prostokąta .
szerokosc - szerokość linii. (liczba typu float).
Przykład:
al_draw_rectangle(250,10,300, 60,al_map_rgba(255,255,0,128),2);
..............................................................................................................................
Rysuje wypełniony prostokąt.
al_draw_filled_rectangle(x1,y1,x2,y2,kolor);
Parametry:
x1, y1, x2, y2 - lewy górny i prawy dolny punkt prostokąta.(liczby typu float).
kolor - kolor prostokąta.
Przykład:
al_draw_filled_rectangle(280, 20,350, 80,al_map_rgba(0,0,0,100));
..............................................................................................................................
Rysuje zaokrąglony prostokąt (linie) pomiędzy czterema punktami.
al_draw_rounded_rectangle( x1, y1, x2, y2, rx, ry, kolor, szerokosc);
Parametry:
x1, y1, x2, y2 - lewy górny i prawy dolny punkt prostokąta.(liczby typu float).
kolor - kolor linii prostokąta .
rx, ry - promień łuku.(liczby typu float).
szerokosc - szerokość linii. (liczba typu float).
Przykład:
al_draw_rounded_rectangle( 50,100,100,150,12,12,al_map_rgb(0,255,255),5);
.........................................................................................................................
Rysuje zaokrąglony wypełniony prostokąt.
al_draw_filled_rounded_rectangle( x1, y1, x2, y2, rx, ry, kolor);
Parametry:
x1, y1, x2, y2 - lewy górny i prawy dolny punkt prostokąta.(liczby typu float).
kolor - kolor prostokąta .
rx, ry - promień łuku.(liczby typu float).
Przykład:
al_draw_filled_rounded_rectangle(110, 90,150,154, 12, 20,al_map_rgb(128,0,255));
.........................................................................................................................
Rysuje okrąg.
al_draw_circle( cx, cy, r, kolor, szerokosc);
Parametry:
cx, cy - środek okręgu.(liczby typu float)
r - promień okręgu. (liczba typu float).
kolor - kolor linii okręgu.
szerokosc - szerokość linii okręgu. (liczba typu float).
Przykład:
al_draw_circle(200,120, 30, al_map_rgb( 0,128, 0), 20);
........................................................................................................................
Rysuje wypełniony okrąg.
al_draw_filled_circle( cx, cy, r, kolor);
Parametry:
cx, cy - środek okręgu.(liczby typu float).
r - promień okręgu. (liczba typu float).
kolor - kolor okręgu.
Przykład:
al_draw_filled_circle(250,120, 34, al_map_rgba(200,28, 0,60));
........................................................................................................................
Rysuje elipsę.
al_draw_ellipse(cx, cy, rx, ry, kolor, szerokosc);
Parametry:
cx, cy - środek elipsy.(liczby typu float)
rx, ry - promienie elipsy. (liczba typu float).
kolor - kolor linii elipsy.
szerokosc - szerokość linii elipsy. (liczba typu float).
Przykład:
al_draw_ellipse(320, 120, 20, 50, al_map_rgba( 128,128,0,128), 8);
........................................................................................................................
Aby wyświetlać proste linie, trójkąty, prostokąty, okręgi, i inne figury geometryczne, nie potrzebujemy wyświetlać bitmap wystarczą nam figury geometryczne, tak zwane prymitywy.
#include <allegro5/allegro_primitives.h> - plik nagłówkowy.
al_init_primitives_addon(); - inicjowanie prymitywów.
al_shutdown_primitives_addon(); - Wyłączenie prymitywów odbywa się automatycznie przy wyjściu z programu, ale możemy to zrobić w każdej chwili podczas jego działania.
Kolory prymitywów możemy określić wcześniej za pomocą (np. ALLEGRO_COLOR kolor = al_map_rgb( 0, 0, 255); lub bezpośrednio w funkcji- al_draw_line( 10, 15, 80, 90, al_map_rgba( 0, 0, 255, 128), 4); // tu linia szeroka na 4 piksele, plus dodanie przezroczystości (czwarty parametr).
.......................................................................................................................................
Rysuje prosty odcinek między dwoma punktami.
al_draw_line( x1, y1, x2, y2, kolor, szerokosc);
Parametry:
x1, y1, x2, y2 - początek i koniec linii. (liczby typu float).
kolor - kolor linii.
szerokosc - szerokość linii. (liczba typu float).
Przykład:
al_draw_line( 10, 15, 80, 90, al_map_rgba( 0, 255, 0, 128), 4);
....................................................................................................................................
Rysuje trójkąt (linie) pomiędzy trzema punktami.
al_draw_triangle( x1, y1, x2, y2, x3, y3, kolor, szerokosc);
Parametry:
x1, y1, x2, y2, x3, y3 - trzy punkty trójkąta.(liczby typu float).
kolor - kolor linii trójkąta.
szerokosc - szerokość linii. (liczba typu float).
Przykład:
al_draw_triangle(100, 15, 150, 25, 125, 80, al_map_rgb(255, 0, 0), 8);
..................................................................................................................................
Rysuje wypełniony trójkąt.
al_draw_filled_triangle(x1,y1,x2,y2,x3,y3,kolor);
Parametry:
x1, y1, x2, y2, x3, y3 - trzy punkty trójkąta.(liczby typu float).
kolor - kolor trójkąta.
Przykład:
al_draw_filled_triangle(190, 15, 250, 76, 175, 80, al_map_rgb(0,0,255));
.................................................................................................................................
Rysuje prostokąt (linie) pomiędzy czterema punktami.
al_draw_rectangle(x1,y1,x2,y2,kolor,szerokosc);
Parametry:
x1, y1, x2, y2 - lewy górny i prawy dolny punkt prostokąta.(liczby typu float).
kolor - kolor linii prostokąta .
szerokosc - szerokość linii. (liczba typu float).
Przykład:
al_draw_rectangle(250,10,300, 60,al_map_rgba(255,255,0,128),2);
..............................................................................................................................
Rysuje wypełniony prostokąt.
al_draw_filled_rectangle(x1,y1,x2,y2,kolor);
Parametry:
x1, y1, x2, y2 - lewy górny i prawy dolny punkt prostokąta.(liczby typu float).
kolor - kolor prostokąta.
Przykład:
al_draw_filled_rectangle(280, 20,350, 80,al_map_rgba(0,0,0,100));
..............................................................................................................................
Rysuje zaokrąglony prostokąt (linie) pomiędzy czterema punktami.
al_draw_rounded_rectangle( x1, y1, x2, y2, rx, ry, kolor, szerokosc);
Parametry:
x1, y1, x2, y2 - lewy górny i prawy dolny punkt prostokąta.(liczby typu float).
kolor - kolor linii prostokąta .
rx, ry - promień łuku.(liczby typu float).
szerokosc - szerokość linii. (liczba typu float).
Przykład:
al_draw_rounded_rectangle( 50,100,100,150,12,12,al_map_rgb(0,255,255),5);
.........................................................................................................................
Rysuje zaokrąglony wypełniony prostokąt.
al_draw_filled_rounded_rectangle( x1, y1, x2, y2, rx, ry, kolor);
Parametry:
x1, y1, x2, y2 - lewy górny i prawy dolny punkt prostokąta.(liczby typu float).
kolor - kolor prostokąta .
rx, ry - promień łuku.(liczby typu float).
Przykład:
al_draw_filled_rounded_rectangle(110, 90,150,154, 12, 20,al_map_rgb(128,0,255));
.........................................................................................................................
Rysuje okrąg.
al_draw_circle( cx, cy, r, kolor, szerokosc);
Parametry:
cx, cy - środek okręgu.(liczby typu float)
r - promień okręgu. (liczba typu float).
kolor - kolor linii okręgu.
szerokosc - szerokość linii okręgu. (liczba typu float).
Przykład:
al_draw_circle(200,120, 30, al_map_rgb( 0,128, 0), 20);
........................................................................................................................
Rysuje wypełniony okrąg.
al_draw_filled_circle( cx, cy, r, kolor);
Parametry:
cx, cy - środek okręgu.(liczby typu float).
r - promień okręgu. (liczba typu float).
kolor - kolor okręgu.
Przykład:
al_draw_filled_circle(250,120, 34, al_map_rgba(200,28, 0,60));
........................................................................................................................
Rysuje elipsę.
al_draw_ellipse(cx, cy, rx, ry, kolor, szerokosc);
Parametry:
cx, cy - środek elipsy.(liczby typu float)
rx, ry - promienie elipsy. (liczba typu float).
kolor - kolor linii elipsy.
szerokosc - szerokość linii elipsy. (liczba typu float).
Przykład:
al_draw_ellipse(320, 120, 20, 50, al_map_rgba( 128,128,0,128), 8);
........................................................................................................................
Rysuje wypełnioną elipsę.
al_draw_filled_ellipse(cx, cy, rx, ry, kolor);
Parametry
cx, cy - środek elipsy.(liczby typu float)
rx, ry - promienie elipsy. (liczba typu float).
kolor - kolor elipsy.
Przykład:
al_draw_filled_ellipse(80, 190, 40, 24, al_map_rgb(0, 128, 255));
........................................................................................................................
To tylko kilka najbardziej przydatnych prymitywów. tu link do pozostałych PRYMITYWY
kolor - kolor elipsy.
Przykład:
al_draw_filled_ellipse(80, 190, 40, 24, al_map_rgb(0, 128, 255));
........................................................................................................................
To tylko kilka najbardziej przydatnych prymitywów. tu link do pozostałych PRYMITYWY
Przykładowy kod:
#include <allegro5/allegro.h>
#include <allegro5/allegro_primitives.h>
int main()
{
al_init();
al_init_primitives_addon();
al_install_keyboard();
ALLEGRO_KEYBOARD_STATE klawiatura;
al_set_new_display_flags(ALLEGRO_WINDOWED);
ALLEGRO_DISPLAY *okno = al_create_display(400,300);
al_set_window_title( okno,"Allegro5 - Prymitywy");
ALLEGRO_EVENT_QUEUE *kolejka = al_create_event_queue(); // event_queue
al_register_event_source(kolejka, al_get_display_event_source(okno));
ALLEGRO_EVENT zdarzenie; // event
while(!al_key_down(&klawiatura, ALLEGRO_KEY_ESCAPE))
{
al_get_next_event(kolejka, &zdarzenie);
if(zdarzenie.type == ALLEGRO_EVENT_DISPLAY_CLOSE) { return 0; }
al_get_keyboard_state(&klawiatura);
al_clear_to_color(al_map_rgb(150,150,150)); //tło
al_draw_line( 10, 15, 80, 90, al_map_rgba( 0, 255, 0, 128), 4);
al_draw_triangle(100, 15, 150, 25, 125, 80, al_map_rgb(255, 0, 0), 8);
al_draw_filled_triangle(190, 15, 250, 76, 175, 80, al_map_rgb(0,0,255));
al_draw_rectangle(250,10,300, 60,al_map_rgba(255,255,0,128),2);
al_draw_filled_rectangle(280, 20,350, 80,al_map_rgba(0,0,0,100));
al_draw_rounded_rectangle( 50,100,100,150,12,12,al_map_rgb(0,255,255),5);
al_draw_filled_rounded_rectangle(110, 90,150,154, 12, 20,al_map_rgb(128,0,255));
al_draw_circle(200,120, 30, al_map_rgb( 0,128, 0), 20);
al_draw_filled_circle(250,120, 34, al_map_rgba(200,28, 0,60));
al_draw_ellipse(320, 120, 20, 50, al_map_rgba( 128,128,0,128), 8);
al_draw_filled_ellipse(80, 190, 40, 24, al_map_rgb(0, 128, 255));
al_flip_display();
al_rest(0.005);//pauza
}
al_destroy_display(okno);
return 0;
}
3 komentarze:
Bardzo fajnie opisane.
A Biblioteka jest świetna:)
Myślę, że warto tu wspomnieć o funkcji
al_set_target_display oraz al_set_target_bitmap.
Ja na przykład potrzebowałem do utworzenia własnoręcznie bitmap i sprawdziłem sobie w manualu (allegro.cc).
Aha i zapomniałem dodać, że tutorial jest dla mnie bardzo czytelny i pomocny :)
Prześlij komentarz