Назад | Начало урока | Вперед
Содержание

Глава 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();

}

Анализ


//dir
#define RT 0
#define BT 1

private:

HBITMAP m_Bmp[8];
Функции передается четырехугольник и реальный контекст устройства, функция по всем правилам выбирает из массива картинок одну картинку и копирует ее в новый контекст устройства (который уже согласован с реальным).

При этом функция анализирует переданный прямоугольник (длину и ширину), и в зависимости от того, что больше - длина или ширина, выбирает из массива рисунков соответствующий рисунок (корабль расположенный вертикально или горизонтально) и количество палуб. И отображает его в переданном прямоугольнике.


Назад | Начало урока | Вверх | Вперед
Содержание

Hosted by uCoz