Как создать лупу для рабочего стола? |
Previous Top Next |
Автор: Zarko Gajic
Code: |
// переменные var Srect,Drect,PosForme:TRect; iWidth,iHeight,DmX,DmY:Integer; iTmpX,iTmpY:Real; C:TCanvas; Kursor:TPoint; // Увеличиваем экран, если приложение не свёрнуто в иконку If not IsIconic(Application.Handle) then begin // Получаем координаты курсора GetCursorPos(Kursor);
// PosForm представляет прямоугольник с // координатами Form (image control). PosForme:=Rect(Form1.Left, Form1.Top, Form1.Left+Form1.Width, Form1.Top+Form1.Height);
//Показываем magnified screen //если курсор за пределами формы. If not PtInRect(PosForme,Kursor) then begin
// Далее код можно использовать для увеличения выбранной // части экрана. С небольшими модификациями его можно // использовать для уменьшения // экрана iWidth:=Image1.Width; iHeight:=Image1.Height; Drect:=Bounds(0,0,iWidth,iHeight); iTmpX:=iWidth / (Slider.Position * 4); iTmpY:=iHeight / (Slider.Position * 4); Srect:=
Rect(Kursor.x,Kursor.y,Kursor.x,Kursor.y); InflateRect(Srect,Round(iTmpX),Round(iTmpY));
//Получаем обработчик(handle) окна рабочего стола. C:=TCanvas.Create; try C.Handle:=GetDC(GetDesktopWindow); //Передаём часть изображения окна в TImage. Image1.Canvas.CopyRect(Drect,C,Srect); finally C.Free; end;
end;
// Обязательно обрабатываем все сообщения Windows. Application.ProcessMessages;
end; // IsIconic |
©Drkb::01824
Взято из http://forum.sources.ru