В D1 (по идее должно работать и в D2) попробуйте это:
Разместите на форме TPaintBox и TButton.
procedure TForm1.Button1Click(Sender: TObject);
var
DeskTop: TCanvas;
begin
DeskTop := TCanvas.Create;
trywith DeskTop do
Handle := GetWindowDC(GetDesktopWindow);
with PaintBox1.Canvas do
CopyRect(Rect(0, 0, 200, 200),
DeskTop,
Rect(0, 0, 200, 200))
finally
DeskTop.Free;
endend;
Это скопирует верхнюю левую область рабочего стола в верхнюю левую область
вашего TPaintBox.
Here is the translation of the content into Russian:
Хорошая вопрос!
Вы пытаетесь зафиксировать снимок экрана и отобразить его на контроле TPaintBox. Вот обновленная версия вашего кода:
procedure TForm1.Button1Click(Sender: TObject);
var
DC: HDC;
begin
// Получите контекст устройства (DC) для десктопа
DC := GetWindowDC(0);
try
PaintBox1.Canvas.Handle := DC; // Установите handle канваса в DC десктопа
PaintBox1.Repaint; // Обновите содержимое контрола
finally
ReleaseDC(0, DC); // Освободите DC
end;
end;
Помните, что изменилось следующее:
1. Вместо создания экземпляра TCanvas и установки его handle в DC десктопа, мы напрямую устанавливаем handle контрола TPaintBox в DC десктопа с помощью GetWindowDC(0). Это более эффективно.
2. Мы вызываем метод Repaint для обновления содержимого контрола TPaintBox.
3. В блоке finally мы освобождаем DC с помощью ReleaseDC, что важно для предотвращения утечек памяти.
С этими изменениями, когда вы нажмете кнопку, снимок десктопа должен быть отображен в вашем контроле TPaintBox!
Обратите внимание, что данный код будет зафиксировать всю десктопную область, а не конкретный регион. Если вам нужно зафиксировать конкретный регион, вы можете использовать GetWindowRect и ClientToScreen, чтобы получить прямоугольник окна, а затем передать его в CopyRect.
Статья описывает способ получения снимка экрана на форме Delphi, используя компонент TPaintBox и процедуру, которая копирует определенный участок рабочего стола в это поле для рисования.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS