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

UptoLike

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

49
Point newPos = location + drift;
bool result = true;
if (onBeforeMove != null)
result = onBeforeMove(this, ref newPos);
if (result = result &&
sprites.ClientRect.Contains(new Rectangle(newPos, spriteSize)))
Set<Point>(ref location, newPos);
return result;
}
/// <summary>
/// Перемещает сайт в новое положение на плоскости XY.
/// </summary>
/// <param name="newLocation">
/// Новое положение левого верхнего угла спрайта.
/// </param>
/// <returns>
/// true, если перемещение произошло, false, если нет.
/// </returns>
public virtual bool MoveTo(Point newLocation)
{
return Move((Size)newLocation - (Size)location);
}
}
/// <summary>
/// Собирает и хранит информацию о следах спрайтов, формирующих список.
/// </summary>
/// <remarks>
/// Объекты класса TracedSpriteList в добавление к свойствам своего предка
/// SpriteList создают и поддерживают битовый массив, хранящий информацию о
/// каждом пикселе клиентской области. Если пиксел является следом спрайта,
/// то соответствующий элемент массива имеет значение true, если нет, то false.
/// Класс TracedSpriteList перекрывает методы RemoveSpriteAt и Clear, уничтожая
/// информацию о следе удаляемого спрайта.
/// </remarks>
public class TracedSpriteList : SpriteList
{
/// <summary>
/// Хранит двумерный битовый массив, отображающий состояние пикселей
/// прямоугольника объекта Control - принадлежит ли пиксел следу спрайта, или фону.
/// </summary>
BitArray[] traceMap;
/// <summary>
/// Возвращает ссылку на битовый массив состояния следов спрайтов.
/// </summary>
internal BitArray[] TraceMap { get { return traceMap; } }
/// <summary>
/// Инициализирует экземпляр объекта класса TracedSpriteList.