Содержание материала

©Drkb::01849

Универсальный способ - скриншот с прозрачностью:

Code:

procedure CaptureScreen(AFileName: string);

const

CAPTUREBLT = $40000000;

var

hdcScreen: HDC;

hdcCompatible: HDC;

bmp: TBitmap;

hbmScreen: HBITMAP;

begin

// Create a normal DC and a memory DC for the entire screen. The

// normal DC provides a "snapshot" of the screen contents. The

// memory DC keeps a copy of this "snapshot" in the associated

// bitmap.

 

hdcScreen := CreateDC('DISPLAY', nil, nil, nil);

hdcCompatible := CreateCompatibleDC(hdcScreen);

// Create a compatible bitmap for hdcScreen.

 

hbmScreen := CreateCompatibleBitmap(hdcScreen,

   GetDeviceCaps(hdcScreen, HORZRES),

   GetDeviceCaps(hdcScreen, VERTRES));

 

// Select the bitmaps into the compatible DC.

SelectObject(hdcCompatible, hbmScreen);

bmp := TBitmap.Create;

bmp.Handle := hbmScreen;

BitBlt(hdcCompatible,

   0, 0,

   bmp.Width, bmp.Height,

   hdcScreen,

   0, 0,

   SRCCOPY or CAPTUREBLT);

 

bmp.SaveToFile(AFileName);

bmp.Free;

DeleteDC(hdcScreen);

DeleteDC(hdcCompatible);

end;

 

 

Используйте стандартный Windows API:

 используйте hWnd := GetDesktopWindow для получения дескриптора 'рабочего стола';

используйте hDC := GetDC (hWnd) для получения HDC (дескриптора контекста экрана) ;

и не забывайте освобождать (уничтожать дескриптор) hDC после выполнения задачи.

 Используя TCanvas.Handle в качестве HDC, можно при помощи WinAPI реализовать функции рисования, или, если это возможно, можно присвоить HDC свойству Handle непосредственно при создании TCanvas.

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить