Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.12.06;
Скачать: CL | DM;

Вниз

Картинка с экрана   Найти похожие ветки 

 
ZMRaven   (2008-02-01 09:19) [0]

Как взять картинку с экрана?
нашёл такое как Screen - имеет много удобных параметров,
Monitor у них даже DesktopRect можно найти и при этом с него ничего не скопируешь.
подскажите как быть?


 
bioSerg   (2008-02-01 10:04) [1]

:)
  bmp1:=TBitMap.Create;
  bmp1.Width:=Screen.Monitors[n].Width;
  bmp1.Height:=Screen.Monitors[n].Height;
  bmp1.PixelFormat:=pf32bit;
  bmp2:=TBitMap.Create;
  bmp2.Width:=Screen.Monitors[n].Width div k;
  bmp2.Height:=Screen.Monitors[n].Height div k;
  bmp2.PixelFormat:=pf32bit;
  with Screen.Monitors[n] do
   BitBlt(bmp1.Canvas.Handle, 0, 0, Width, Height,
                                                GetDC(h), Left-Screen.DesktopLeft, Top, SRCCOPY);

у меня спросить не мог?


 
homm ©   (2008-02-01 10:54) [2]

> [1] bioSerg   (01.02.08 10:04)
> BitBlt(bmp1.Canvas.Handle, 0, 0, Width, Height,
>                                                GetDC(h)
> , Left-Screen.DesktopLeft, Top, SRCCOPY);

Да Вы, бательна, шутник! Кто рессурсы потом освобождать будет и что такое h ?


 
bioSerg   (2008-02-01 11:11) [3]

:)

  h := FindWindow(PChar("ProgMan"), nil);
  h := GetWindow(h, GW_CHILD);
  h := GetWindow(h, GW_CHILD); // получаем Handle рабочего стола
  bmp1:=TBitMap.Create;
  bmp1.Width:=Screen.Monitors[n].Width;
  bmp1.Height:=Screen.Monitors[n].Height;
  bmp1.PixelFormat:=pf32bit;
  with Screen.Monitors[n] do
  BitBlt(bmp1.Canvas.Handle, 0, 0, Width, Height,                                                GetDC(h), Left-Screen.DesktopLeft, Top, SRCCOPY);
// здесь твоя работа с картинкой (отправка, сохранение и т.д.)
  bmp1.Free;

А ресурсы освобождать нужно где-то дальше, каюсь написал лишнего :)


 
homm ©   (2008-02-01 11:43) [4]

> [3] bioSerg   (01.02.08 11:11)
> А ресурсы освобождать нужно где-то дальше, каюсь написал
> лишнего :)

И как же ты собрался освободить рессурс, который ты получил и сразу передл в функцию, не оставив даже указателя на него?


 
ZMRaven   (2008-02-01 12:48) [5]

homm, ошибки это плохо - понятно.
напишите ваш вариант?


 
ketmar ©   (2008-02-01 13:00) [6]

>напишите ваш вариант?
$30.


 
homm ©   (2008-02-01 14:31) [7]

> [6] ketmar ©   (01.02.08 13:00)

Не демпингуй. Тебе откат будет в случае чего :)


 
New   (2008-02-04 04:49) [8]

var
 Bitmap: TBitmap;
 DC: HDC;
begin
 Bitmap:= TBitmap.Create;
 Bitmap.Width:= Screen.Width;
 Bitmap.Height:= Screen.Height;
 DC:= GetDC(0);
 BitBlt(Bitmap.Canvas.Handle, 0, 0, Bitmap.Width, Bitmap.Height, DC, 0, 0, SRCCOPY);
 Image1.Canvas.StretchDraw(Image1.Canvas.ClipRect, Bitmap);
 Bitmap.Free;
 ReleaseDC(0, DC);



Страницы: 1 вся ветка

Текущий архив: 2009.12.06;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.008 c
4-1224238965
Циркуль
2008-10-17 14:22
2009.12.06
SHBrowseForFolder модально


1-1227270584
parasolka
2008-11-21 15:29
2009.12.06
Ширина ячеек в DBGrid.


15-1255010538
@!!ex
2009-10-08 18:02
2009.12.06
Чем можно докачать файл?


15-1254773945
KilkennyCat
2009-10-06 00:19
2009.12.06
Еаsy, с Днем Рождения!


15-1254831159
Kolan
2009-10-06 16:12
2009.12.06
Как тестировать не публичные методы?