如何实现图形移动 无残影
我练习的一段代码,我想实现图形的移动,不过,随着坐标的变化,显示出来的是一系列图形,在graphic.h头文件中,不知道哪个是用来清除原图形的,所以,不知道怎么实现图形转移效果,,求帮忙,,,谢
#include<graphics.h>
#include<conio.h>
#include<Windows.h>
#include<stdio.h>
void main()
{int liftstart,liftend,i;
initgraph(500,500,NULL);//初始化作图大小环境;
cleardevice();
setbkcolor(BLUE);
//bar(10,10,80,80);
//rectangle(11,liftstart,liftend,79.5);//构造电梯的函数;
setcolor(RED);
rectangle(10, 10, 80, 498);
rectangle(8,8,82,500);
line(0,82,500,82);
line(0,164,500,164);
line(0,246,500,246);
line(0,328,500,328);
line(0,410,500,410);
line(0,492,500,492);
RECT r={220,10,350,30};
drawtext(_T("电梯模拟"), &r,DT_LEFT|DT_WORDBREAK);
outtextxy(220,30,_T("电梯模拟"));
outtextxy(450, 40,_T("6楼"));
outtextxy(450,120,_T("5楼"));
outtextxy(450,200,_T("4楼"));
outtextxy(450,280,_T("3楼"));
outtextxy(450,360,_T("2楼"));
outtextxy(450,440,_T("1楼"));
setcolor(WHITE);
for(liftstart=11,liftend=79,i=1;i<500;i++)
{
liftstart++;
liftend++;
rectangle(11,liftstart,79,liftend);
Sleep(100);
}
getchar();
closegraph();
}
[最优解释]
这个问题可以简化为:在屏幕上画一个点,显示若干秒,清除之。
就以画点为例:
TC的图形库肯定会在图形程序初始化时设置背景颜色,即默认背景颜色,或者lz可以自己设置背景颜色,比如set_background_color(RED); 显然,系统一定提供了获取背景色的途径,比如是: get_background_color();
如何显示一个点呢? paint_point(x,y,COLOR); 在画点之前,先记录背景色,比如: int last_bgc; last_bgc = get_background_color(); paint_point(x,y); 然后记录画点的位置,int last_x, last_y; last_x = x; last_y = y; 然后显示若干毫秒, sleep(1000);//睡1000毫秒 paint_point(last_x, last_y, last_bgc); // 即将这个点的颜色设置为背景色,那么就达到清除的目的了。
[其他解释]