Синтаксис функции BitBltO приведен ниже:
BOOL BitBltCHDC hdcDest. int nXDest. int nYDest. int nWidth. int nHeight. HDC hdcSrc. int nXSrc. int nYSrc. DWORD dwRop)
Параметры этой функции задают контекст hdcDest и предназначенную для копирования прямоугольную область (nXDest. nYDest nWidth, nHeight)окна-получателя. Для окна-источника указывают только контекст hdcSrc и координаты (nXSrc. nYSrc) левого верхнего угла копируемого участка. Этого достаточно, так как прямоугольники должны быть одинаковыми.
Параметр dwRop задает растровую операцию аналогично тому, как это делает функция SetR0P2() для графических примитивов. Но набор операций задается другими константами: О SRCC0PY - простое копирование в принимающее изображение; О SRCAND - результирующий цвет формируется при помощи побитной операции логического И над цветами копируемого фрагмента и принимающего окна; О SRCPAINT - результирующий цвет формируется при помощи операции ИЛИ; О SRC INVERT - результирующий цвет формируется при помощи операции XOR; О BLACKNESS - область-получатель заполняется черным цветом; О DSTINVERT - изображение в области-получателе инвертируется.
Кроме смешивания цветов области источника и области получателя, можно задать операции, формирующие результирующий цвет как результат работы некоей функции от цвета источника и кисти, установленной в контексте получателя. Для этого надо указать одну из констант - PATPAINT, MERGECOPY, PATC0PY или PATINVERT.
Так, константа PATC0PY задает закраску прямоугольника кистью получателя. По умолчанию в контексте задана сплошная белая кисть. Если прямоугольник надо закрасить другим цветом, то следует создать нужную кисть и внести ее в контекст. Рисование такого прямоугольника часто поддерживается графическим адаптером аппаратно, поэтому его удобно применять для очистки фона.
Контекст памяти и двойная буферизация
Если в операции BitBlt( ) оба контекста связаны с одним окном, то функция будет копировать один участок окна в другой.
Рисование в системной памяти средствами GDI