📄 unit1.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 + -