下面代码要实现的功能是:把显示器屏幕中(111,94)与(912,630)中间的图截出来然后另存,屏幕辨率为1024*768,并且rect(111,94,962,630)这个矩形的中心点为(512,384),也就是说这个矩形在屏幕的正中间,可编译运行后截的图的区域为rect(0,0,912,630),而我要的是rect(111,94,962,630)这部分的截图,最终保存的图中rect(0,0,111,630)与(0,0,962,94)中全部为白色,这两部分是不需要的。procedure TForm1.button1click(Sender: TObject);
var
DC: HDC;
MyCanvas: TCanvas;
MyRect: TRect;
bmp:tbitmap;
begin
DC:= GetWindowDC(0);
MyCanvas:= TCanvas.Create;
try
bmp:=tbitmap.Create;
MyCanvas.Handle:= DC;
MyRect:= Rect(111, 94, 912, 630);
bmp1:=tbitmap.Create;
bmp.PixelFormat:= pf24bit;
bmp.Width:= MyRect.Right;
bmp.Height:= MyRect.Bottom;
bmp.canvas.CopyRect(MyRect, MyCanvas, MyRect);
bmp.savetofile('d:\1.bmp');
finally
MyCanvas.Handle:= 0;
bmp.Free;
MyCanvas.Free;
releaseDC(0, DC);
end;
end;
var
DC: HDC;
MyCanvas: TCanvas;
MyRect: TRect;
bmp:tbitmap;
begin
DC:= GetWindowDC(0);
MyCanvas:= TCanvas.Create;
try
bmp:=tbitmap.Create;
MyCanvas.Handle:= DC;
MyRect:= Rect(111, 94, 912, 630);
bmp1:=tbitmap.Create;
bmp.PixelFormat:= pf24bit;
bmp.Width:= MyRect.Right;
bmp.Height:= MyRect.Bottom;
bmp.canvas.CopyRect(MyRect, MyCanvas, MyRect);
bmp.savetofile('d:\1.bmp');
finally
MyCanvas.Handle:= 0;
bmp.Free;
MyCanvas.Free;
releaseDC(0, DC);
end;
end;
DC: HDC;
MyCanvas: TCanvas;
MyRect,destRect: TRect;
bmp:tbitmap;
begin
DC:= GetWindowDC(0);
MyCanvas:= TCanvas.Create;
bmp:=tbitmap.Create;
try
MyCanvas.Handle:= DC;
MyRect:= Rect(111, 94, 912, 630);
bmp:=tbitmap.Create;
bmp.PixelFormat:= pf24bit;
bmp.Width:= 912-111;
bmp.Height:= 630-94;
destRect.top :=0;
destRect.Left :=0;
destRect.Bottom := bmp.Height;
destRect.Right :=bmp.Width;
bmp.canvas.CopyRect(destRect, MyCanvas, MyRect);
bmp.savetofile('d:\1.bmp');
finally
MyCanvas.Handle:= 0;
bmp.Free;
MyCanvas.Free;
releaseDC(0, DC);
end;