【发布时间】:2013-04-04 12:38:00
【问题描述】:
我想将整个屏幕的屏幕截图绘制到 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;
【问题讨论】:
-
Canvas 不允许绘图,因为您没有指定尺寸。
-
在这两个词中,TCanvas 必须与 TBitmap (TBitmapCanvas) 或 TForm (TControlCanvas) 或 Handle set 之类的东西直接关联。未能收到此错误。
标签: delphi delphi-xe3