Hiệu ứng hoạt hình đồ họa rất hay bằng C/ C+

1242

Hiệu ứng hoạt hình là hiệu ứng các đối tượng di chuyển trên màn hình. Bản chất của việc dịch chuyển trên màn hình là xóa vị trí cũ và vẽ đối tượng sang vị trí mới.
– Xóa vị trí cũ bằng cách vẽ đối tượng với màu của màu nền.
Ví dụ vẽ quả bóng di chuyển từ góc trên trái xuống góc phải dưới

#include <graphics.h>
#include <stdio.h>
#include <conio.h>
#include <dos.h>
int draw(int x, int y, int color)
{
	setcolor(color);
	setbkcolor(color);
	setfillstyle(0,color);
	pieslice(x,y,0,360,10);
	return 0;
}
int main()
	{
		int i,x,y;
		int dx=5;
		int dy=5;
		int md=0,mode;
		initgraph(&md,&mode,"");
		x=10;
		y=10;
		while(!kbhit())
		{
			draw(x,y,15);
			delay(10);
			draw(x,y,0);
			x+=dx;
			y+=dy;
			if(y<10 || y>300)
				dy=-dy;
			if(x<10 || x>400)
				dx=-dx;
		}
            getch();
	      closegraph();
	return 0;
	}	

– Tình huống nền có hình ảnh khác việc vẽ lại màu nền sẽ xóa các đối tượng trên nền. Để giải quyết vấn đề này cần phải lưu trữ lại tình trạng màn hình trước khi vẽ. Sau đó hồi phục lại màn hình để tiếp tục vẽ sang vị trí mới.

#include <graphics.h>
#include <stdio.h>
#include <conio.h>
#include <dos.h>
#define r 5
char *b;
int draw(int x, int y, int color)
{
	setcolor(color);
	setbkcolor(color);
	setfillstyle(0,color);
	pieslice(x,y,0,360,r);
	return 0;
}
int main()
{
	int i,x,y;
	int dx=5;
	int dy=5;
	delay(10);
	int md=0,mode=0;
	initgraph(&md,&mode,"");
	b=(char*)malloc(imagesize(1,1,2*r+1,2*r+1));
	if(b==NULL)
	{
		closegraph();
		return -1;
	}
	line(0,0,getmaxx(),getmaxy());
	line(0,getmaxy(),getmaxx(),0);
	x=10;
	y=10;
	while(!kbhit())
	{
		getimage(x-r,y-r,x+r,y+r,b);
		draw(x,y,15);
		delay(10);
		putimage(x-r,y-r,b,COPY_PUT);
		x+=dx;
		y+=dy;
		if(y<10 || y>310)
			dy=-dy;
		if(x<10 || x>420)
			dx=-dx;
	}
       getch();
	free(b);
	closegraph();
	return 0;
}	

BÌNH LUẬN

Vui lòng nhập bình luận của bạn
Vui lòng nhập tên của bạn ở đây