|
|
|
как отобразить картинки (поле для игры) на VC++
|
|||
|---|---|---|---|
|
#18+
задача состоит в том, чтобы нарисовать поле, каждая клетка которого - картинка (поле размерностью 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); } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2004, 09:58 |
|
||
|
как отобразить картинки (поле для игры) на VC++
|
|||
|---|---|---|---|
|
#18+
А самому под дебагом цикл проверить слабо? :) оффтоп: Если это РТ-игра, то лучше сразу от MFC отказаться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2004, 10:29 |
|
||
|
как отобразить картинки (поле для игры) на VC++
|
|||
|---|---|---|---|
|
#18+
пробывала. но изучаю VC++ около недели. знаний не хватает. :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2004, 10:51 |
|
||
|
как отобразить картинки (поле для игры) на VC++
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2004, 11:28 |
|
||
|
как отобразить картинки (поле для игры) на VC++
|
|||
|---|---|---|---|
|
#18+
дело тут не в скобках. - я просто через буфер не так скопировала. программа при компиляции не выдаёт ошибок в коде, выдаёт только 1 картинку, вместо 81. я не понимаю почему, не может это быть как-то связано с контекстом устройства? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2004, 13:01 |
|
||
|
как отобразить картинки (поле для игры) на VC++
|
|||
|---|---|---|---|
|
#18+
Сначала ты делаешь 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) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2004, 13:28 |
|
||
|
как отобразить картинки (поле для игры) на VC++
|
|||
|---|---|---|---|
|
#18+
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) и будет каждая последующая картинка рисоваться на один пиксль дальше :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2004, 14:58 |
|
||
|
как отобразить картинки (поле для игры) на VC++
|
|||
|---|---|---|---|
|
#18+
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 ; - задаёт стиль окошка. что надо добавить, чтобы в заголовке окошка добавилась ещё кнопка свернуть(помимо закрыть окошко)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2004, 16:37 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=32777674&tid=2034108]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
84ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
| others: | 238ms |
| total: | 438ms |

| 0 / 0 |
