Графический интерфейс GDI в Microsoft Windows


             

если оно не равно нулю)


lpfh = (LPBITMAPFILEHEADER)lpDib;

// Используем значение, указанное в заголовке // файла ( если оно не равно нулю) if(lpfh->bfOffBits) return((LPSTR)lpfh + lpfh->bfOffBits);

// Вычисляем адрес исходя из размеров заголовков и // таблицы цветов lpih = (LPBITMAPINFOHEADER)(lpDib + sizeof(BITMAPFILEHEADER));

return((LPSTR)lpih + lpih->biSize + (DWORD)(DIBNumColors(lpDib) * sizeof(RGBQUAD))); }

// ------------------------------- // Функция DIBPaint // Рисование DIB при помощи функции StretchDIBits // -------------------------------

BOOL DIBPaint(HDC hdc, int x, int y, HDIB hDib) { HBITMAP hbmp; HDC hMemDC; WORD wHeight, wWidth; LPDIB lpDib; LPBITMAPINFOHEADER lpih;

lpDib = (LPDIB)GlobalLock(hDib); if(lpDib == NULL) return(-1);

lpih = (LPBITMAPINFOHEADER)(lpDib + sizeof(BITMAPFILEHEADER));

// Определяем размеры DIB wHeight = lpih->biHeight; wWidth = lpih->biWidth;

// Рисуем DIB без масштабирования StretchDIBits(hdc, x, y, wWidth, wHeight, 0, 0, wWidth, wHeight, DIBFindBits(lpDib), (LPBITMAPINFO)lpih, DIB_RGB_COLORS, SRCCOPY);

GlobalUnlock(hDib);

return TRUE; }

// ------------------------------- // Функция DIBPaintBlt // Рисование DIB при помощи функции BitBlt // -------------------------------

BOOL DIBPaintBlt(HDC hdc, int x, int y, HDIB hDib) { HBITMAP hbmp; HDC hMemDC; WORD wHeight, wWidth; LPDIB lpDib; LPBITMAPINFOHEADER lpih;

lpDib = (LPDIB)GlobalLock(hDib); if(lpDib == NULL) return(-1);

lpih = (LPBITMAPINFOHEADER)(lpDib + sizeof(BITMAPFILEHEADER));

wHeight = lpih->biHeight; wWidth = lpih->biWidth;

// Создаем совместимое битовое изображение hbmp = CreateCompatibleBitmap(hdc, wWidth, wHeight);

// Создаем совместимый контекст памяти hMemDC = CreateCompatibleDC(hdc);

// Преобразуем DIB в DDB SetDIBits(hdc, hbmp, 0, wHeight, DIBFindBits(lpDib), (LPBITMAPINFO)lpih, DIB_RGB_COLORS);

// Выбираем DDB в контекст отображения hbmp = (HBITMAP)SelectObject(hMemDC, hbmp);

// Рисуем DDB BitBlt(hdc, x, y, wWidth, wHeight, hMemDC, 0, 0, SRCCOPY);


Содержание  Назад  Вперед