⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.cpp

📁 绝好的动画演示程序,效果很不错
💻 CPP
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
     : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormCreate(TObject *Sender)
{
     Rocket=new Graphics::TBitmap();
     Mask=new Graphics::TBitmap();
     BG=new Graphics::TBitmap();
     tmp=new Graphics::TBitmap();
     Rocket->LoadFromFile("Rocket.bmp");
     Mask->LoadFromFile("Mask.bmp");
     BG->LoadFromFile("BG.bmp");
     tmp->Width=Rocket->Width;
     tmp->Height=Rocket->Height;
     SpeedX=TrackBar1->Position;
     SpeedY=TrackBar2->Position;
     XDir=1;YDir=1;
     Pos=Point(0,0);
     mRect=Rect(0,0,Rocket->Width,Rocket->Height);
     DrawObject();
     ShowObject();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormDestroy(TObject *Sender)
{
     delete Rocket;
     delete Mask;
     delete BG;
     delete tmp;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
     PatchIt();
     MoveObject();
     DrawObject();
     ShowObject();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::TrackBar1Change(TObject *Sender)
{
     SpeedX=TrackBar1->Position;
}
//---------------------------------------------------------------------------


void __fastcall TForm1::PatchIt()
{
     TRect lRect=Rect(Pos.x,Pos.y,Pos.x+Rocket->Width,
          Pos.y+Rocket->Height);
     BG->Canvas->CopyMode = cmSrcCopy;
     BG->Canvas->CopyRect(lRect,tmp->Canvas,mRect);
}


void __fastcall TForm1::MoveObject()
{
     Pos.x+=SpeedX*XDir;
     Pos.y+=SpeedY*YDir;
     if (Pos.x<0||Pos.x>BG->Width-mRect.Right){
          XDir*=-1;
          if (Pos.x<0)
               Pos.x*=-1;
          else
               Pos.x=2*BG->Width-2*mRect.Right-Pos.x;
     }
     if (Pos.y<0||Pos.y>BG->Height-mRect.Bottom){
          YDir*=-1;
          if (Pos.y<0)
               Pos.y*=-1;
          else
               Pos.y=2*BG->Height-2*mRect.Bottom-Pos.y;
     }

}


void __fastcall TForm1::DrawObject()
{
     TRect lRect=Rect(Pos.x,Pos.y,Pos.x+Rocket->Width,
          Pos.y+Rocket->Height);
     tmp->Canvas->CopyRect(mRect,BG->Canvas,lRect);
     BG->Canvas->CopyMode=cmSrcAnd;
     BG->Canvas->CopyRect(lRect,Mask->Canvas,mRect);
     BG->Canvas->CopyMode=cmSrcPaint;
     BG->Canvas->CopyRect(lRect,Rocket->Canvas,mRect);
}


void __fastcall TForm1::ShowObject()
{
     PaintBox1->Canvas->Draw(0,0,BG);
}
void __fastcall TForm1::TrackBar2Change(TObject *Sender)
{
     SpeedY=TrackBar2->Position;
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -