Глава 4
Функция рисования корабля DrawShip().
Функции передается четырехугольник и реальный контекст устройства, функция по всем правилам выбирает из массива картинок одну картинку и копирует ее в новый контекст устройства (который уже согласован с реальным).
При этом функция анализирует переданный прямоугольник (длину и ширину), и в зависимости от того, что больше - длина или ширина, выбирает из массива рисунков соответствующий рисунок (корабль расположенный вертикально или горизонтально) и количество палуб. И отображает его в переданном прямоугольнике.
То есть фактически нарисовать корабль - это выбрать рисунок из массива и разместить в переданных координатах прямоугольника.
void CField::DrawShip(RECT rect, CDC *dc)
{
int x, y;
int lenght, dir;
CDC memDC;
CBitmap bmp, *oldbmp;
unsigned char *bitspr, *bitsist;
CBitmap bmpist;
x = (rect.right - rect.left)/20;
y = (rect.bottom- rect.top)/20;
if(x > y) {
lenght = x; dir = RT; }
else {lenght = y; dir = BT; }
//сделать новый контекст устройства совместимым с реальным
//контектом устройства
memDC.CreateCompatibleDC(dc);
//прикрепить загружаемое изображение (образ),
//переданный через параметр к объекту CBitmap
bmpist.Attach(
m_Bmp[(lenght-1)*2+dir]);
//выбрать точечный рисунок в новый контекст устройства
oldbmp = memDC.SelectObject(&bmpist);
//копировать точечный рисунок в новый контекст устройства
dc->BitBlt(rect.left+1, rect.top+1, rect.right-rect.left-1,
rect.bottom-rect.top-1, &memDC, 0, 0, SRCCOPY);
memDC.SelectObject(oldbmp);
memDC.DeleteDC();
bmpist.Detach();
}
private:
Функции передается четырехугольник и реальный контекст устройства,
функция по всем правилам выбирает из массива картинок одну картинку
и копирует ее в новый контекст устройства (который уже согласован с реальным).
//dir
#define RT 0
#define BT 1
При этом функция анализирует переданный прямоугольник (длину и ширину), и в зависимости от того, что больше - длина или ширина, выбирает из массива рисунков соответствующий рисунок (корабль расположенный вертикально или горизонтально) и количество палуб. И отображает его в переданном прямоугольнике.
Назад |
Начало урока |
Вверх |
Вперед
Содержание