简单动画问题
动画—在窗体中显示一个小球,如果达到边界就反弹:
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;
[解决办法]
代码基本正确。即,建立一个新工程。用你的代码,看到一个兰绿色的球在屏上跑。只是,边界计算小有问题。