|
|
Совместная работа базового компонента TCanvas и функции Windows API BitBlt.
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); }
|
|
JS+ | Руководство пользователя
|
|
|
|
|
|