delphi中如何实现QQ中的截图并实现拉伸放大移动的功能
解决方案 »
- Delphi通过ADO方式怎样连接有打开权限(已知密码)的Excel表?关键是ADOConnection..ConnectionString:=?
- MAPX5在区域画字符串问题?
- 面向对象、数据结构、编译原理、离散数学... 等等等一大堆的知识,该以什么样的顺序学习较好呢?
- 为什么经常出现远程过程调用失败,我是用DCOM开发的多层结构。。。
- 大家玩过老虎机?
- 仿真程序刚开了一个头,雇主忽然变心,早产儿伤心流产。。。
- Actionlist或者Actionmanager中的事件如何在ActiveForm中使用
- 我是第三次发这个贴子了,不知道有没有高手能给一个完整的答案
- 寻 vcl xp style free control
- 怎样检查本机端口情况?
- regware4是什么控件,怎么用?
- TClientDataSet添加字段
我写个小程序给你参考一下。
unit unMainFrm;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;type
TScreenCanvas = class(TCanvas)
protected
procedure CreateHandle; override;
public
destructor Destroy; override;
end; TForm2 = class(TForm)
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
procedure FormCreate(Sender: TObject);
procedure FormPaint(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
private
{ Private declarations }
FBitMap: TBitmap;
FScreenCanvas: TScreenCanvas;
FDrawEnable: Boolean;
public
{ Public declarations }
end;var
Form2: TForm2;implementation{$R *.dfm}procedure TForm2.FormCreate(Sender: TObject);
begin
FBitMap := TBitmap.Create;
with FBitMap do
begin
Width := 1024;
Height := 768;
end;
FScreenCanvas := TScreenCanvas.Create;
FBitMap.Canvas.CopyRect(Rect(0,0,1024,768), FScreenCanvas, Rect(0,0,1024,768));
end;procedure TForm2.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = VK_ESCAPE then
Application.Terminate;
if Key = VK_CONTROL then
begin
Canvas.FillRect(Canvas.ClipRect);
Invalidate;
end;
end;procedure TForm2.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
FDrawEnable := True;
Randomize;
Canvas.Brush.Color := Random($FFFFFF + 1);
Ellipse(Canvas.Handle, X - 5, Y - 5, X + 5, Y + 5);
end;procedure TForm2.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if FDrawEnable then
begin
Ellipse(Canvas.Handle, X - 5, Y - 5, X + 5, Y + 5);
end;
end;procedure TForm2.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
FDrawEnable := False;
end;procedure TForm2.FormPaint(Sender: TObject);
begin
Canvas.Draw(0, 0, FBitMap);
end;{ TScreenCanvas }procedure TScreenCanvas.CreateHandle;
begin
inherited;
Handle := GetDC(0);
end;destructor TScreenCanvas.Destroy;
begin
ReleaseDC(Handle, 0);
inherited;
end;end.你改下单元名和窗体的名字就可以用了.
TScreenCanvas是用来获取桌面图像的类.
只要掌握CopyRect函数就没什么问题了,然后记录几个鼠标的点击位置就可以把图给截出来.图片的拉伸移动也是CopyRect函数搞的