求助,用BCB 画一个移动的圆遇到问题!
如题,本人想在image中画一个能够按照一条给定的直线运动(圆心在直线上)的圆,但是遇到一些问题,希望高手帮忙解决!
问题:1。 刷新问题,好像有个函数,可以刷新区域,可惜不记得了,唉,每次弄得黑乎乎一片!
2. 运行时间太快,看不到移动,怎么才能让其慢下来,看到圆的运动。
希望各位GG帮忙!
[解决办法]
1 、 Refresh()
贴出你的代码
[解决办法]
void __fastcall TForm1::Timer1Timer(TObject *Sender){ Graphics::TBitmap *bmp=NULL; static int x=-1,y,rx,ry; static int r=100; bmp=new Graphics::TBitmap(); bmp->Width=ClientWidth; bmp->Height=ClientHeight; if(x==-1) { Timer1->Interval=30; randomize(); x=random(bmp->Width-r)+r; y=random(bmp->Height-r)+r; rx=random(2); if(rx==0) rx=-1; ry=random(2); if(ry==0) ry=-1; } x+=rx; y+=ry; if(x<1) rx=1; else if (x>bmp->Width-r-1) rx=-1; if(y<1) ry=1; else if(y>bmp->Height-r-1) ry=-1; bmp->Canvas->Ellipse(x,y,x+r,y+r); BitBlt(Canvas->Handle,0,0,bmp->Width,bmp->Height,bmp->Canvas->Handle,0,0,SRCCOPY); delete bmp;}
[解决办法]
不要直接在画布上画,创建一个Bitmap对象,在Bitmap对象上画,好好了再Drow到画布上
鼠标移动位置重绘背景,新位置重绘圆,Drow到画布
[解决办法]
可以用Canvas->DrawImage或BitBlt函数实现