Сравнительное объектно-ориентированное проектирование - 35 стр.

UptoLike

Составители: 

35
// Директива компилятору #undef отказывается от обозначения sprite
#undef sprite
// Директива компилятору #define в данном случае вводит имя canvas
#define canvas spriteList->Canvas
// Изображает спрайт на канве
void __fastcall TSprite::Paint()
{
canvas->CopyMode=cmSrcCopy;
image->Canvas->CopyRect(Rect(0,0,image->Width,image->Height),
canvas, SpriteRect);
PaintPicture();
}
// Убирает изображение спрайта с канвы, восстанавливая фон
void __fastcall TSprite::Restore()
{
canvas->CopyMode=cmSrcCopy;
canvas->CopyRect(SpriteRect, image->Canvas,
Rect(0,0,image->Width,image->Height));
}
// Директива компилятору #undef отказывается от обозначения canvas
#undef canvas
// Возвращает прямоугольник спрайта
TRect __fastcall TSprite::GetSpriteRect()
{
return Rect(location,Point(location.x+size.cx,location.y+size.cy));
}
// Определяет факт пересечения прямоугольников спрайтов,
// находящихся в слоях First и Second
bool __fastcall TSprite::Intersect(int const First,int const Second)
{
TRect rect;
return IntersectRect(rect,
((TSprite*)(spriteList->Items[First]))->SpriteRect,
((TSprite*)(spriteList->Items[Second]))->SpriteRect);
}
// Реализация методов класса спрайт со следом TtracedSprite
// Констуктор класса вызывает конструктор предка и инициализирует поле center
__fastcall TTracedSprite::TTracedSprite(TRect const rect):TSprite(rect)
{
center = CenterPoint(SpriteRect);
}
// Деструктор освобождает массив точек следа и вызывает деструктор предка
__fastcall TTracedSprite::~TTracedSprite()
{
trPoints.Length=0;