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 (ostatni 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).
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).
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.
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).
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.
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).
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).
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).
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.
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 *event_queue = al_create_event_queue();
al_register_event_source(event_queue, al_get_display_event_source(okno));
ALLEGRO_EVENT event;
while(!al_key_down(&klawiatura, ALLEGRO_KEY_ESCAPE))
{
al_get_next_event(event_queue, &event);if(event.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_flip_display();
al_rest(0.005);//pauza
}
al_destroy_display(okno);
return 0;
}
Brak komentarzy:
Prześlij komentarz