Конференция "Media" » Картинка с экрана [D7, WinXP]
 
  • ZMRaven (01.02.08 09:19) [0]
    Как взять картинку с экрана?
    нашёл такое как Screen - имеет много удобных параметров,
    Monitor у них даже DesktopRect можно найти и при этом с него ничего не скопируешь.
    подскажите как быть?
  • bioSerg (01.02.08 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 © (01.02.08 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 (01.02.08 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 © (01.02.08 11:43) [4]
    > [3] bioSerg   (01.02.08 11:11)
    > А ресурсы освобождать нужно где-то дальше, каюсь написал
    > лишнего :)

    И как же ты собрался освободить рессурс, который ты получил и сразу передл в функцию, не оставив даже указателя на него?
  • ZMRaven (01.02.08 12:48) [5]
    homm, ошибки это плохо - понятно.
    напишите ваш вариант?
  • ketmar © (01.02.08 13:00) [6]
    >напишите ваш вариант?
    $30.
  • homm © (01.02.08 14:31) [7]
    > [6] ketmar ©   (01.02.08 13:00)

    Не демпингуй. Тебе откат будет в случае чего :)
  • New (04.02.08 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);

 
Конференция "Media" » Картинка с экрана [D7, WinXP]
Есть новые Нет новых   [134431   +14][b:0][p:0.002]