2010-11-15 87 views
2

我正在用CI中的graphics.h制作一个程序,我试图实现矩阵屏幕保护程序,但是我在代码中停留在这里。字母只会掉落一次。我希望它们继续下降(删除文本前)。请指导我如何清除旧内容在C中的矩阵排序图形

void main_page(void) 
{ 
    int i,j,k,l,m,n,size; 
    setcolor(BLUE); 
    for(i=0;i<500;i+=50) 
    { 
      settextstyle(GOTHIC_FONT,1,1); 
      outtextxy(50,50+i,"a b c"); 
      outtextxy(100,150+i,"H I J"); 
      outtextxy(150,250+i,"X Y Z"); 
      outtextxy(300,50+i,"D E F"); 
      outtextxy(350,350+i,"D E F"); 
      outtextxy(400,350+i,"D E F"); 
      outtextxy(450,350+i,"D E F"); 
      outtextxy(500,50+i,"D E F"); 
      outtextxy(550,350+i,"D E F"); 
      outtextxy(600,350+i,"D E F"); 

      delay(100); 
    } 

alt text

回答

1

你没有删除或旧的位置上写的字?所以你可能会自下而上,而不是自上而下,最后,最后打印一些空白?

补充:好吧,这是一个非常蛮力的方式来做到这一点,我不喜欢。用你的循环替换你的循环中的代码:

  settextstyle(GOTHIC_FONT,1,1); 
      outtextxy(50, 50+i,"a b c"); 
      outtextxy(100,150+i,"H I J"); 
      outtextxy(150,250+i,"X Y Z"); 
      outtextxy(300, 50+i,"D E F"); 
      outtextxy(350,350+i,"D E F"); 
      outtextxy(400,350+i,"D E F"); 
      outtextxy(450,350+i,"D E F"); 
      outtextxy(500, 50+i,"D E F"); 
      outtextxy(550,350+i,"D E F"); 
      outtextxy(600,350+i,"D E F"); 

      delay(100); 

      outtextxy(50, 50+i,"  "); 
      outtextxy(100,150+i,"  "); 
      outtextxy(150,250+i,"  "); 
      outtextxy(300, 50+i,"  "); 
      outtextxy(350,350+i,"  "); 
      outtextxy(400,350+i,"  "); 
      outtextxy(450,350+i,"  "); 
      outtextxy(500, 50+i,"  "); 
      outtextxy(550,350+i,"  "); 
      outtextxy(600,350+i,"  "); 
+0

我没有得到如何帮助。 – 2010-11-15 18:04:22

+0

@fahad:通常,如果我想在屏幕上显示移动的对象,我需要弄清楚如何删除/替换旧图像。也许我不完全明白你在做什么,但我在低带宽设备上用动态图形做了很多。顺便说一句,一个有用的技术是双缓冲,即绘制到背景位图并将其绘制到屏幕上。知觉地说,它是瞬间的。 – 2010-11-15 20:24:46

+0

@mike:我如何向程序添加位图图像? – 2010-11-16 12:30:19