Решение 1
Используйте стандартный Windows API:
используйте hWnd := GetDesktopWindow для получения дескриптора 'рабочего стола';
используйте hDC := GetDC (hWnd) для получения HDC (дескриптора контекста экрана) ;
и не забывайте освобождать (уничтожать дескриптор) hDC после выполнения задачи.
Используя TCanvas.Handle в качестве HDC, можно при помощи WinAPI реализовать функции рисования, или, если это возможно, можно присвоить HDC свойству Handle непосредственно при создании TCanvas.
Решение 2
В D1 (по идее должно работать и в D2) попробуйте это:
Разместите на форме TPaintBox и TButton.
procedure TForm1.Button1Click(Sender: TObject); var DeskTop : TCanvas ; begin DeskTop := TCanvas.Create ; try with DeskTop do Handle := GetWindowDC (GetDesktopWindow) ; with PaintBox1.Canvas do CopyRect (Rect (0, 0, 200, 200), DeskTop, Rect (0, 0, 200, 200)) finally DeskTop.Free end end; |
Это скопирует верхнюю левую область рабочего стола в верхнюю левую область вашего TPaintBox. [000121]