-
Как взять картинку с экрана? нашёл такое как Screen - имеет много удобных параметров, Monitor у них даже DesktopRect можно найти и при этом с него ничего не скопируешь. подскажите как быть?
-
:) 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); у меня спросить не мог?
-
> [1] bioSerg (01.02.08 10:04) > BitBlt(bmp1.Canvas.Handle, 0, 0, Width, Height, > GetDC(h) > , Left-Screen.DesktopLeft, Top, SRCCOPY);
Да Вы, бательна, шутник! Кто рессурсы потом освобождать будет и что такое h ?
-
:)
h := FindWindow(PChar('ProgMan'), nil);
h := GetWindow(h, GW_CHILD);
h := GetWindow(h, GW_CHILD); 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;
А ресурсы освобождать нужно где-то дальше, каюсь написал лишнего :)
-
> [3] bioSerg (01.02.08 11:11) > А ресурсы освобождать нужно где-то дальше, каюсь написал > лишнего :)
И как же ты собрался освободить рессурс, который ты получил и сразу передл в функцию, не оставив даже указателя на него?
-
homm, ошибки это плохо - понятно. напишите ваш вариант?
-
>напишите ваш вариант? $30.
-
> [6] ketmar © (01.02.08 13:00)
Не демпингуй. Тебе откат будет в случае чего :)
-
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);
|