Я хочу нарисовать снимок экрана со всего экрана на холст TForm1.Холст не позволяет рисовать
Этот код хорошо работает в Delphi XE3
procedure TForm1.Button1Click(Sender: TObject);
var
c,scr: TCanvas;
r,r2: TRect;
begin
c := TCanvas.Create;
scr := TCanvas.Create;
c.Handle := GetWindowDC(GetDesktopWindow);
try
r := Rect(0, 0, 200, 200);
form1.Canvas.CopyRect(r, c, r);
finally
ReleaseDC(0, c.Handle);
c.Free;
end;
Теперь я хочу, чтобы скопировать снимок экрана на другой холст первым. Есть ли способ сделать это, не получив эту ошибку?
procedure TForm1.Button1Click(Sender: TObject);
var
c,scr: TCanvas;
r,r2: TRect;
begin
c := TCanvas.Create;
scr := TCanvas.Create;
c.Handle := GetWindowDC(GetDesktopWindow);
try
r := Rect(0, 0, 200, 200);
scr.CopyRect(r,c,r); <-- Error, canvas does not allow drawing
form1.Canvas.CopyRect(r, scr, r); <-- Error, canvas does not allow drawing
finally
ReleaseDC(0, c.Handle);
c.Free;
end;
Холст не позволяет рисовать, потому что вы не указываете размеры. – Darthman
В двух словах TCanvas должен быть связан с чем-то вроде TBitmap (TBitmapCanvas) или TForm (TControlCanvas) или Handle set напрямую. В противном случае вы получите эту ошибку. – OnTheFly