首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

简单动画有关问题

2012-09-08 
简单动画问题动画—在窗体中显示一个小球,如果达到边界就反弹:int stepX,stepY,x,ybool Flagvoid __fastc

简单动画问题
动画—在窗体中显示一个小球,如果达到边界就反弹:
int stepX,stepY,x,y;
bool Flag;
void __fastcall TForm1::FormCreate(TObject *Sender)
{
  stepX = 20;
  stepY = 20;
  x = 50;
  y = 50;
  Timer1 -> Enabled = true;
  Timer1 -> Interval = 500;
  Image1 -> Canvas -> Pen -> Mode = pmXor;
  Image1 -> Canvas -> Brush -> Color = clRed;
  Flag = false;

}
//---------------------------------------

void __fastcall TForm1::Timer1Timer(TObject *Sender)
{  
  if(Flag)
  Image1 -> Canvas -> Ellipse(x,y,x+50,y+50);
  else
  Flag = true;
  if(((x + 50 + stepX) > Image1 -> Width) || (x -50 + stepX) < 0)
  stepX = -stepX;
  if(((y + 50 + stepY) > Image1 -> Height) || (y -50 + stepY) < 0)
  stepY = -stepY;
  x = x + stepX;
  y = y + stepY;
  Image1 -> Canvas -> Ellipse(x,y,x+50,y+50);
   
}

运行之后完全没有显示,是怎么回事啊,求解?

[解决办法]
Image1 是否太小了, 设置长200,宽200 试试看看
[解决办法]
alclient 要跟其他可视控件 align 属性一起出现才有效果的。窗体里面单独放一个Image是不管用的。先将Image设定大一些看看。
然后把你的程序顺序修改一下。
Timer1 -> Interval = 500;
Image1 -> Canvas -> Pen -> Mode = pmXor;
Image1 -> Canvas -> Brush -> Color = clRed;
Timer1 -> Enabled = true;
[解决办法]
代码基本正确。即,建立一个新工程。用你的代码,看到一个兰绿色的球在屏上跑。只是,边界计算小有问题。

热点排行