powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / как отобразить картинки (поле для игры) на VC++
9 сообщений из 9, страница 1 из 1
как отобразить картинки (поле для игры) на VC++
    #32776717
anais
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
задача состоит в том, чтобы нарисовать поле, каждая клетка которого - картинка (поле размерностью 9 на 9).
то есть 1 картинку размножить на всё поле.
входе выполнения кода ниже, выводиться только 1 клетка, вместо 81. подскажите, где я ошибаюсь


class CField : public CObject
{
public:
void Draw(CDC* pDC);
CField();
virtual ~CField();
int m_Field[CountRow][CountRow]; //массив поля
int m_CountBalls; //количество шариков на поле
int m_ColorBalls; //цвет текущий шариков
CBall ball;
};

/*реализация Draw()*/
void CField::Draw(CDC* pDC)
{
for (int i=0;i<CountRow;i++) {
for (int j=0;j<CountRow;j++) {
/*рисуем на поле. тут рисуется одна картинка вместо всего поля. почему???? я же делаю всё в цикле?*/

ball.Draw(i*48, j*48, m_Field [j], pDC);
};


//класс CBall

class CBall : public CObject
{
public:
void Draw (int x, int y, int m_color, CDC *pDC); //рисование шарика (рисование)
CBall(){};
CRaster raster;
virtual ~CBall();
};

/*реализация Draw()*/
void CBall::Draw(int x, int y, int m_color, CDC *pDC)
{
// 1 вариант
/* CBitmap bitmap;
CDC dcDisplayMemory;
switch (m_color)
{
case 0:
default:
bitmap.LoadBitmap(IDB_BITMAP0); break;
};
dcDisplayMemory.CreateCompatibleDC(pDC);
dcDisplayMemory.SelectObject(&bitmap);
pDC->BitBlt(48*x,48*y, 48,48, &dcDisplayMemory,0,0,SRCCOPY);*/

//2 вариант
BOOL k=false;
k=raster.LoadBMP("1.bmp");
if (k) raster.DrawBitmap(pDC, 16*x,16*y,16,16,16*x,16*y,16,16,1,SRCCOPY);
}
...
Рейтинг: 0 / 0
как отобразить картинки (поле для игры) на VC++
    #32776823
Siebentearbreit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А самому под дебагом цикл проверить слабо? :)

оффтоп: Если это РТ-игра, то лучше сразу от MFC отказаться
...
Рейтинг: 0 / 0
как отобразить картинки (поле для игры) на VC++
    #32776891
anais
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пробывала.
но изучаю VC++ около недели. знаний не хватает. :(
...
Рейтинг: 0 / 0
как отобразить картинки (поле для игры) на VC++
    #32777047
istalker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
a tam gde Draw realizacija figurnyje skobki pravil'no rastavlenny? ne vizhu zakryvajuschih skobok dlia for.

void CField::Draw(CDC* pDC)
{
for (int i=0;i<CountRow;i++) {
for (int j=0;j<CountRow;j++) {
/*рисуем на поле. тут рисуется одна картинка вместо всего поля. почему???? я же делаю всё в цикле?*/

ball.Draw(i*48, j*48, m_Field[j], pDC);
}
}
}

izviniajus' za jazyk, ne russkij ja :D
...
Рейтинг: 0 / 0
как отобразить картинки (поле для игры) на VC++
    #32777359
anais
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дело тут не в скобках. - я просто через буфер не так скопировала. программа при компиляции не выдаёт ошибок в коде, выдаёт только 1 картинку, вместо 81. я не понимаю почему, не может это быть как-то связано с контекстом устройства?
...
Рейтинг: 0 / 0
как отобразить картинки (поле для игры) на VC++
    #32777436
Tracer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сначала ты делаешь
ball.Draw(i*48, j*48, m_Field[j], pDC);

в Draw опять умножаешь
pDC->BitBlt(48*x,48*y, 48,48, &dcDisplayMemory,0,0,SRCCOPY)

сделай просто
pDC->BitBlt(x,y, 48,48, &dcDisplayMemory,0,0,SRCCOPY)
...
Рейтинг: 0 / 0
как отобразить картинки (поле для игры) на VC++
    #32777674
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TracerСначала ты делаешь
ball.Draw(i*48, j*48, m_Field[j], pDC);

в Draw опять умножаешь
pDC->BitBlt(48*x,48*y, 48,48, &dcDisplayMemory,0,0,SRCCOPY)

сделай просто
pDC->BitBlt(x,y, 48,48, &dcDisplayMemory,0,0,SRCCOPY)

и будет каждая последующая картинка рисоваться на один пиксль дальше :)
...
Рейтинг: 0 / 0
как отобразить картинки (поле для игры) на VC++
    #32777984
anais
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tracer прав!

/*реализация Draw()*/
void CField::Draw(CDC* pDC)
{
for (int i=0;i<CountRow;i++) {
for (int j=0;j<CountRow;j++) {
/*рисуем на поле. тут рисуется одна картинка вместо всего поля. почему???? я же делаю всё в цикле?*/

ball.Draw(i*48, j*48, m_Field [j], pDC); // тут не надо умножать!!!
};


cs.style = WS_OVERLAPPED | WS_CAPTION | FWS_ADDTOTITLE | WS_SYSMENU ; - задаёт стиль окошка. что надо добавить, чтобы в заголовке окошка добавилась ещё кнопка свернуть(помимо закрыть окошко)?
...
Рейтинг: 0 / 0
как отобразить картинки (поле для игры) на VC++
    #32778682
Siebentearbeit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
WS_MINIMIZEBOX

А дебагом надо научиться пользоваться... брекпоинты расстаблять, значения в точке останова смотреть... етс...
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / как отобразить картинки (поле для игры) на VC++
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]