domingo, 7 de março de 2010

Elipse

A função de elipse é semelhante a função circulo, embora o raio é dividido em dois parâmetros: um para a horizontal e outro para a vertical, conforme mostra a função:
void ellipse(BTIMAP *bmp, int x, int y, int rx, int ry, int color);

Esta imagem demonstra como funciona a função elipse:



Vamos ao código:

// Cabeçalho com a inclusão das bibliotecas
// necessárias para esse programa
#include <conio.h>
#include <stdlib.h>
#include <allegro.h>

// Inicio do programa principal
void main(void)
{
int x, y, radiusx, radiusy;
int red, green, blue, color;

// Inicializa a Allegro
allegro_init();

install_timer();
srand(time(NULL));

// Inicializa o teclado
install_keyboard();

// Inicializa o modo do video para 640x480
int ret = set_gfx_mode(GFX_AUTODETECT_WINDOWED, 640,
480, 0, 0);
if(ret != 0){
allegro_message(allegro_error);
return;
}
// Mostra a resolução da tela
textprintf(screen, font, 0, 0, 15,
"Ellipse Program - %dx%d - Pressione ESC para
sair",
SCREEN_W, SCREEN_H);

// Aguarda o pressionamento da tecla ESC
while(!key[KEY_ESC])
{
// Configura uma localização aleatória
x = 30 + rand() % (SCREEN_W - 60);
y = 30 + rand() % (SCREEN_H - 60);
radiusx = rand() % 30;
radiusy = rand() % 30;

// Configura uma cor aleatória
red = rand() % 255;
green = rand() % 255;
blue = rand() % 255;
color = makecol(red, green, blue);

// Desenha o circulo
ellipse(screen, x, y, radiusx, radiusy, color);
rest(25);
}
// finaliza o programa
allegro_exit();
}
END_OF_MAIN();


Aqui você aprendeu a desenhar uma elipse sem preenchimento mas para desenhar elipse com preenchimentos é só trocar a linha:
ellipse(screen, x, y, radiusx, radiusy, color);
porellipsefill(screen, x, y, radiusx, radiusy, color);


Este vídeo mostra a execução do arquivo:



Para baixar este exemplo clique aki.