WINAPI/Winapi C++, отрисовка Bitmap

513
02 ноября 2017, 07:14

При отрисовке изображения Bitmap оно накладывается на само себя, а если выносить вне, то происходит мерцание изображения.

void DrawBitmap(HDC hDC, int x, int y, HBITMAP hBitmap)
{
    HBITMAP hbm, hOldbm;
    HDC hMemDC;
    BITMAP bm;
    // Создаем контекст памяти, совместимый
    // с контекстом отображения
    hMemDC = CreateCompatibleDC(hDC);
    // Выбираем изображение bitmap в контекст памяти
    hOldbm = (HBITMAP)SelectObject(hMemDC, hBitmap);
    // Если не было ошибок, продолжаем работу
    if (hOldbm)
    {
        // Определяем размеры изображения
        GetObject(hBitmap, sizeof(BITMAP), (LPSTR)&bm);

        // Рисуем изображение bitmap
        TransparentBlt(hDC, x, y, bm.bmWidth, bm.bmHeight,
            hMemDC, 0, 0, bm.bmWidth, bm.bmHeight, RGB(0, 0, 0));
        // Восстанавливаем контекст памяти
        SelectObject(hMemDC, hOldbm);
    }
    // Удаляем контекст памяти
    DeleteDC(hMemDC);
}

void Draw(HDC* hdc)
{
    HDC hMem = CreateCompatibleDC(*hdc);
    SelectObject(hMem, BGround);
    AddPlanets(&hMem);
    BitBlt(*hdc, 0, 0, sizeX, sizeY, hMem, 0, 0, SRCCOPY);
    DeleteDC(hMem);
}
void AddPlanets(HDC * hdc)
{
    DrawBitmap(*hdc, MovementPlanet(150).first, MovementPlanet(150).second, Planets[0]);
}

Вызываю Draw в WM_PAINT + есть Timer, который вызывает InlidateRect Как сделать, чтобы не накладывался?

READ ALSO
Poco & Mysql = ошибка Error in my_thread_global_end(): 1 threads didn't exit

Poco & Mysql = ошибка Error in my_thread_global_end(): 1 threads didn't exit

Использую библиотеку Poco в своем проектеА именно подключение к mysql

328
Ошибка при конвертации BSTR в QString

Ошибка при конвертации BSTR в QString

У меня есть функция, которая делает выборку по WMI, вот пример - https://msdnmicrosoft

252
Странные ошибки в visual studio

Странные ошибки в visual studio

Уважаемое комьюнити, столкнулся с проблемой в visual studio, которое невероятно раздражаетА именно:

242
Объединение интервалов

Объединение интервалов

Имеется n-промежутков, вида: [a1,b1];[a2,b2];

258