Поделиться через


Функция BitBlt (wingdi.h)

Функция BitBlt выполняет битовую передачу данных цвета, соответствующих прямоугольнику пикселей, из указанного контекста исходного устройства в контекст целевого устройства.

Синтаксис

BOOL BitBlt(
  [in] HDC   hdc,
  [in] int   x,
  [in] int   y,
  [in] int   cx,
  [in] int   cy,
  [in] HDC   hdcSrc,
  [in] int   x1,
  [in] int   y1,
  [in] DWORD rop
);

Параметры

[in] hdc

Дескриптор контекста целевого устройства.

[in] x

Координата X в логических единицах левого верхнего угла целевого прямоугольника.

[in] y

Координата Y в логических единицах левого верхнего угла целевого прямоугольника.

[in] cx

Ширина (в логических единицах) исходного и целевого прямоугольников.

[in] cy

Высота (в логических единицах) исходного и целевого прямоугольников.

[in] hdcSrc

Дескриптор контекста исходного устройства.

[in] x1

Координата X в логических единицах верхнего левого угла исходного прямоугольника.

[in] y1

Координата Y в логических единицах верхнего левого угла исходного прямоугольника.

[in] rop

Код растровой операции. Эти коды определяют, как данные цвета исходного прямоугольника должны сочетаться с данными цвета для целевого прямоугольника для достижения окончательного цвета.

В следующем списке показаны некоторые распространенные коды растровых операций.

Значение Значение
ЧЕРНОТА
Заполняет целевой прямоугольник, используя цвет, связанный с индексом 0 в физической палитре. (Черный цвет для физической палитры по умолчанию).
CAPTUREBLT
Включает все окна, размещенные поверх окна в результирующем изображении. По умолчанию изображение содержит только ваше окно. Обратите внимание, что обычно это нельзя использовать для контекста устройств печати.
DSTINVERT
Инвертирует прямоугольник назначения.
MERGECOPY
Объединяет цвета исходного прямоугольника с кистью, выбранной в hdcDest, с помощью оператора BOOLEAN AND.
MERGEPAINT
Объединяет цвета инвертированного исходного прямоугольника с цветами целевого прямоугольника с помощью оператора BOOLEAN OR.
NOMIRRORBITMAP
Предотвращает зеркальное отображение растрового изображения.
NOTSRCCOPY
Копирует перевернутый исходный прямоугольник в место назначения.
NOTSRCERASE
Объединяет цвета исходного и целевого прямоугольников с помощью логического оператора OR, а затем инвертирует результирующий цвет.
PATCOPY
Копирует кисть, выбранную в hdcDest, в растровое изображение назначения.
PATINVERT
Объединяет цвета кисти, выбранной в настоящее время в hdcDest, с цветами целевого прямоугольника с помощью логического оператора XOR.
PATPAINT
Объединяет цвета кисти, выбранной в настоящее время в hdcDest, с цветами инвертированного исходного прямоугольника с помощью оператора boolean OR. Результат этой операции объединяется с цветами целевого прямоугольника с помощью оператора Boolean OR.
SRCAND
Объединяет цвета исходного и целевого прямоугольников с помощью оператора Boolean AND.
SRCCOPY
Копирует исходный прямоугольник непосредственно в целевой прямоугольник.
SRCERASE
Объединяет инвертированные цвета целевого прямоугольника с цветами исходного прямоугольника с помощью оператора BOOLEAN AND.
SRCINVERT
Объединяет цвета исходного и целевого прямоугольников с помощью логического оператора XOR.
SRCPAINT
Объединяет цвета исходного и целевого прямоугольников с помощью логического оператора OR.
БЕЛИЗНЫ
Заполняет целевой прямоугольник, используя цвет, связанный с индексом 1 в физической палитре. (Белый цвет для физической палитры по умолчанию.)

Возвращаемое значение

Если функция выполняется успешно, возвращается ненулевое значение.

Если функция выполняется неудачно, возвращается нулевое значение. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.

Комментарии

BitBlt выполняет обрезку только на целевом контроллере домена.

Если преобразование поворота или сдвига действует в контексте исходного устройства, BitBlt возвращает ошибку. Если в контексте исходного устройства существуют другие преобразования (а соответствующее преобразование не действует в контексте целевого устройства), прямоугольник в контексте конечного устройства растягивается, сжимается или поворачивается по мере необходимости.

Если цветовые форматы исходного и целевого контекстов устройства не совпадают, функция BitBlt преобразует исходный цветовый формат в формат назначения.

При записи расширенного метафайла возникает ошибка, если контекст исходного устройства идентифицирует контекст устройства с расширенным метафайлом.

Не все устройства поддерживают функцию BitBlt . Дополнительные сведения см. в записи RC_BITBLT возможности растра в функции GetDeviceCaps , а также в следующих функциях: MaskBlt, PlgBlt и StretchBlt.

BitBlt возвращает ошибку, если контексты исходного и целевого устройств представляют разные устройства. Чтобы передать данные между контроллерами домена для разных устройств, преобразуйте растровое изображение памяти в DIB, вызвав Метод GetDIBits. Чтобы отобразить DIB на втором устройстве, вызовите SetDIBits или StretchDIBits.

ICM: При возникновении заливки цветом управление цветом не выполняется.

Примеры

В следующем примере кода демонстрируется использование BitBlt.

if (!BitBlt(hdcMemDC,
    0, 0,
    rcClient.right - rcClient.left, rcClient.bottom - rcClient.top,
    hdcWindow,
    0, 0,
    SRCCOPY))
{
    MessageBox(hWnd, L"BitBlt has failed", L"Failed", MB_OK);
    goto done;
}

Чтобы увидеть этот пример в контексте, см. статью Запись изображения.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header wingdi.h (включая Windows.h)
Библиотека Gdi32.lib
DLL Gdi32.dll

См. также раздел

Функции точечных рисунков

Общие сведения о точечных изображениях

Getdibits

GetDeviceCaps

MaskBlt

PlgBlt

SetDIBits

StretchBlt

StretchDIBits