Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.141.202.187] |
|
Сообщ.
#1
,
|
|
|
как сделать, чтобы при перемещении Bitmap изображение не мерцало.
вот как это делаю я. <br> case WM_CREATE:<br> {<br> hBitMap = LoadBitmap(GetModuleHandle(NULL),<br> MAKEINTRESOURCE(IDB_BITMAP_POKEMON));<br> SetTimer(hWnd,MY_TIMER,550,NULL);<br> break;<br> }<br> case WM_TIMER:<br> {<br> x+=dx;<br> RECT rc;<br> rc.left = x - 1;<br> rc.top = y - 1;<br> BITMAP bm;<br> GetObject(hBitMap, sizeof(BITMAP), (LPSTR) &bm);<br> rc.right = x + bm.bmWidth + 1;<br> rc.bottom= y + bm.bmHeight + 1;<br> InvalidateRect(hWnd,&rc,TRUE);<br> break;<br> }<br> <br> case WM_PAINT:<br> hdc = BeginPaint(hWnd, &ps);<br> // TODO: Add any drawing code here...<br> RECT rt;<br> GetClientRect(hWnd, &rt);<br> DrawText(hdc, szHello, strlen(szHello), &rt, DT_CENTER);<br> DrawBitmap(hdc,x,y,hBitMap);<br> <br> EndPaint(hWnd, &ps);<br><br> break;<br>//прорисовка изображения<br>void DrawBitmapRop(HDC hDC, int x, int y, <br> HBITMAP hBitmap, DWORD dwRop)<br>{<br> HBITMAP hbm, hOldbm;<br> HDC hMemDC;<br> BITMAP bm;<br> POINT ptSize, ptOrg;<br><br> // Создаем контекст памяти, совместимый<br> // с контекстом отображения<br> hMemDC = CreateCompatibleDC(hDC);<br><br> // Выбираем изображение bitmap в контекст памяти<br> hOldbm = (HBITMAP)SelectObject(hMemDC, hBitmap);<br><br> // Если не было ошибок, продолжаем работу<br> if (hOldbm)<br> {<br> // Для контекста памяти устанавливаем тот же<br> // режим отображения, что используется в<br> // контексте отображения<br> SetMapMode(hMemDC, GetMapMode(hDC));<br><br> // Определяем размеры изображения<br> GetObject(hBitmap, sizeof(BITMAP), (LPSTR) &bm);<br><br> ptSize.x = bm.bmWidth; // ширина<br> ptSize.y = bm.bmHeight; // высота<br><br> // Преобразуем координаты устройства в логические<br> // для устройства вывода<br> DPtoLP(hDC, &ptSize, 1);<br><br> ptOrg.x = 0;<br> ptOrg.y = 0;<br><br> // Преобразуем координаты устройства в логические<br> // для контекста памяти<br> DPtoLP(hMemDC, &ptOrg, 1);<br><br> // Рисуем изображение bitmap<br> BitBlt(hDC, x, y, ptSize.x, ptSize.y,<br> hMemDC, ptOrg.x, ptOrg.y, dwRop);<br><br> // Восстанавливаем контекст памяти<br> SelectObject(hMemDC, hOldbm);<br> }<br><br> // Удаляем контекст памяти<br> DeleteDC(hMemDC);<br>}<br> |
Сообщ.
#2
,
|
|
|
не выводи текст на весь экран
|
Сообщ.
#3
,
|
|
|
Цитата rodion, 25.04.03, 16:24:44 не выводи текст на весь экран в смысле текст проги? или какой текст? |
Сообщ.
#4
,
|
|
|
ооооо!!!!! взываю к вам программеры ! ответьте мне!
|
Сообщ.
#5
,
|
|
|
GetClientRect(hWnd, &rt);
DrawText(hdc, szHello, strlen(szHello), &rt, DT_CENTER); а это что по твоему? Как я понял из своего опыта, что бы не мерцало нужно выводить одной функцией |