JS+
Усиленный язык сценариев для Windows
с возможностью встраивания
в ваши приложения
О языке JS+ Справочник Скачать JS+ DLL
Контакты
СПРАВОЧНИК ПО ЯЗЫКУ JS+ Содержание

BitBlt

- функция WinAPI
Функции WinAPI
Передает указанную прямоугольную область между указанными контекстами устройств в соответствии с указанным режимом.
Синтаксис
function BitBlt(
  hdcDst,
  xDst,
  yDst,
  wDst,
  hDst,
  hdcSrc,
  xSrc,
  ySrc,
  rstOpr
): Boolean;

Параметры
Параметр Тип Описание
hdcDst Number дескриптор целевого контекста устройства
xDst Number x-координата левого верхнего угла целевого прямоугольника
yDst Number y-координата левого верхнего угла целевого прямоугольника
wDst Number ширина целевого прямоугольника
hDst Number высота целевого прямоугольника
hdcSrc Number дескриптор исходного контекста устройства
xSrc Number x-координата левого верхнего угла исходного прямоугольника
ySrc Number y-координата левого верхнего угла исходного прямоугольника
rstOpr Enum код растровой операции (см. ниже)

Параметр rstOpr
Значение Описание
BLACKNESS заполняет целевой прямоугольник, используя цвет, связанный с индексом 0 в физической палитре (этот цвет является черным для заданной по умолчанию физической палитры).
CAPTUREBLT включает любые окна, которые расположены поверх исходного окна, (по умолчанию, изображение содержит только исходное окно).
DSTINVERT инвертирует целевой прямоугольник.
MERGECOPY объединяет цвета исходного прямоугольника с кистью, выбранной в текущий момент в hdcDst, при помощи оператора AND.
MERGEPAINT объединяет цвета инвертированного исходного прямоугольника с цветами целевого прямоугольника при помощи оператора OR.
NOMIRRORBITMAP препятствует зеркалированию при передаче изображения.
NOTSRCCOPY передает инвертированное изображение.
NOTSRCERASE комбинирует цвета исходных и целевых прямоугольников при помощи оператора OR, затем инвертирует полученный цвет.
PATCOPY копирует кисть, выбранную в текущий момент в hdcDst, в целевой рисунок.
PATINVERT комбинирует цвета кисти, выбранной в текущий момент в hdcDst, с цветами целевого прямоугольника при помощи оператора XOR.
PATPAINT комбинирует цвета кисти, выбранной в текущий момент в hdcDst, с цветами инвертированного исходного прямоугольника при помощи оператора OR. Результаты этой операции объединяются с цветами целевого прямоугольника при помощи оператора OR.
SRCAND комбинирует цвета исходных и целевых прямоугольников при помощи оператора AND.
SRCCOPY копирует исходный прямоугольник непосредственно в целевой прямоугольник.
SRCERASE комбинирует инвертированные цвета целевого прямоугольника с цветами исходного прямоугольника при помощи оператора AND.
SRCINVERT комбинирует цвета исходного и целевого прямоугольников при помощи оператора XOR.
SRCPAINT комбинирует цвета исходного и целевого прямоугольников при помощи оператора OR.
WHITENESS заполняет целевой прямоугольник, используя цвет, связанный с индексом 1 в физической палитре (этот цвет является белым для заданной по умолчанию физической палитры).
Возвращаемое значение
true в случае успеха или false в противном случае.
Пример (JS+)
var crc_dx=15,crc_dy=15;

// Главная форма
frm=new TForm();
frm.Caption="JS+ - функция WinAPI BitBlt";

// Строка состояния
stb=new TStatusBar(frm);
stb.SimpleText=" Нажмите кнопку Фото";

// Панель
pnl=new TPanel(frm);
pnl.BorderStyle=bsSingle;
pnl.ClientWidth =crc_dx*35+2;
pnl.ClientHeight=crc_dy*22+2;
pnl.Color=clWhite;

// Подогнать размер формы под размер панели
frm.ClientWidth =pnl.Width;
frm.ClientHeight=pnl.Height+stb.Height;

// Изображение
img=new TImage(pnl);
img.SetBounds(1,1,pnl.ClientWidth-2,pnl.ClientHeight-2);
img_cnv=img.Canvas;
img_cnv.Brush.Color=pnl.Color;
img_cnv.FillRect(img_cnv.ClipRect);

// Кнопка
btn=new TButton(frm);
btn.Caption="Фото";
btn.Left=frm.ClientWidth-btn.Width-crc_dx;
btn.Top =frm.ClientHeight-stb.Height-btn.Height-crc_dy;
btn.Hint="Сделать фото";
btn.ShowHint=true;
btn.OnClick=btn_Click;

// Таймер
tmr=new TTimer(frm);
tmr.Interval=20;
tmr.Enabled=true;
tmr.OnTimer=tmr_Timer;

frm.ShowModal();

// Обработчик события OnClick
function btn_Click(btn)
{
  var dx,dy;

  // Форма для фото
  pht_frm=new TForm();
  pht_frm.Caption="Фото";
  pht_frm.Position=poDesigned;
  pht_frm.Left=frm.Left+50;
  pht_frm.Top =frm.Top +80;
  pht_frm.ClientWidth =dx=img.Width;
  pht_frm.ClientHeight=dy=img.Height;

  pht_img=new TImage(pht_frm);
  pht_img.Align=alClient;
  pht_cnv=pht_img.Canvas;

  BitBlt(pht_cnv.Handle,0,0,dx,dy,img_cnv.Handle,0,0,SRCCOPY);

  pht_frm.ShowModal();
}

// Обработчик события OnTimer
function tmr_Timer(tmr)
{
  var clr,rct=img_cnv.ClipRect;
  var x=Math.round((rct.Width() *Math.random())/crc_dx);
  var y=Math.round((rct.Height()*Math.random())/crc_dy);

  switch (Math.round(5.5*Math.random())) {
    case 3 : clr=clRed; break;
    case 4 : clr=clGreen; break;
    case 5 : clr=clBlue; break;
    default: clr=pnl.Color;
  }

  x*=crc_dx;
  y*=crc_dy;
  img_cnv.Pen.Color=img_cnv.Brush.Color=clr;
  img_cnv.Ellipse(x,y,x+crc_dx,y+crc_dy);
}
Совместимость
Windows API
См. также
JS+Руководство пользователя
Адрес этой страницы: http://jsplus.ru/MANUAL/JSPlus/WinAPI/Function/BitBlt.htm
© 2024,