你按下截图按钮的时候,其实看到的不是真正的桌面了,是程序把桌面的图片截下来画在一个全屏的窗口上.

我写个小程序给你参考一下。

unit unMainFrm;

interface

uses

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函数搞的

java中qq中拉伸的文件,delphi中如何实现QQ中的截图并实现拉伸放大移动的功能相关推荐

  1. java log4j mysql_java – 配置log4j属性文件以存储在mysql数据库中

    如果你使用的是mysql.创建一个log4j.properties文件.这对我有用. 把它放在你的应用程序的根文件夹中.即所有包裹的根.我也有一个包含字段id,日期,用户,消息和类的表日志. log4 ...

  2. 用java在d盘创建test文件_在D盘中创建文件test.txt,文件中内容为:hello Java,然后利用流把该文件拷贝到E盘根目录中...

    // 在D盘中创建文件test.txt,文件中的内容为:"hello Java" File file = new File("D:/test.txt"); St ...

  3. qq服务器上的文件删除后如何恢复,qq文件过期怎么恢复(过期的QQ文件如何申请恢复)...

    日常工作上,常常会应用QQ来推送文档,很有可能有一些情况下忘掉或太忙而沒有去接受文档,进而造成 QQ文档到期,那麼针对到期的QQ文档应当如何恢复呢?一切正常状况下文档到期了就没有办法修复了,由于是临时 ...

  4. oracle10gasmcmd,ORACLE 10g中ASMCMD使用及ASM文件

    ORACLE 10g中ASMCMD使用及ASM文件XML DB访问 1.引言 自动存储管理(ASM)是Oracle数据库10g的新功能,它为数据库管理员提供了一个简单的存储管理界面,并且该界面在所有服 ...

  5. DataTable中的数据导出Excel文件

    DataTable中的数据导出Excel文件 View Code ///<summary> /// 将DataTable中的数据导出到指定的Excel文件中 ///</summary ...

  6. tp view html 引用css,TP5.1:将外部资源引入到框架中(css/js/font文件)

    为了让我们的框架形式变得更加好看,我们需要加入Bootstrap和Jq文件到框架中 1.通过Bootstrap和jq官网进行相关文件的下载 (1)Bootstrap下载地址:https://v3.bo ...

  7. ubuntu中非常好用的文件比较工具meld

    ubuntu中非常好用的文件比较工具meld 类似于windows中的beyondcompare,非常好用,安装好之后,直接在命令行写meld即可

  8. QQ目录里哪个文件是记录系统消息的?

    CardMgr? Config?ewh? MsgEx? notes? ShareInfo? User? VQQ? 还是其他的文件? 解答: 应该是MsgEx.db,不过这个也难说,至今没有统一出来到底 ...

  9. java命令 jar文件夹_java中jar命令打包一个文件夹下的所有文件

    (1)首先,必须保证java的所有路径都设置好,在dos提示符下输入jar -help 出现C:\Documents and Settings\dly>jar -help 非法选项:h 用法:j ...

最新文章

  1. Android开发环境搭建与起步--太详细了,一步一步图文教你
  2. 基于【CentOS-7+ Ambari 2.7.0 + HDP 3.0】HAWQ数据仓库 使用之 gpfdist协议
  3. python 三引号_Python 字符串
  4. 打包跳过编译_Apache Flink v1.9-SNAPSHOT 源码编译
  5. 测试公众号修改名称_微信公众号开通个人认证,只需三步
  6. html js url 跳转页面内容,js跳转页面方法总结
  7. WCF NetTcpBinding Transport安全模式(7) ClientCredentialType证书验证模式---- ChainTrust验证模式...
  8. opencv函数速查笔记
  9. TCP、UDP、HTTP、SOCKET、WebSocket之间的区别
  10. 【干货】java参考文献论文类
  11. 基于Zabbix的校园网核心监控系统设计与实现
  12. HTML学生个人网站作业设计:动漫网站设计——蜡笔小新(3页) HTML+CSS+JavaScript 简单DIV布局个人介绍网页模板代码 DW学生个人网站制作成品下载
  13. VS2013使用技巧汇总
  14. Centos7.5系统部署禅道协调管理系统以及配置优化
  15. 阿里云新优惠活动,幸运券免费领取
  16. Android项目架构图
  17. 【通讯术语】VoLTE
  18. IOS8以上打开定位闪退的问题
  19. 菜鸟的经历和今后目标
  20. 【优化调度】基于matlab遗传算法求解公交车调度排班优化问题【含Matlab源码 2212期】

热门文章

  1. MFC中简单绘图几种方式
  2. datax源码阅读二:Engine流程
  3. [IOS]clang diagnostic、Wprotocol ..
  4. wampserver环境下,apache本地下设置多个域名
  5. vs2013update4 vs-mda-remote cordova真机测试ios
  6. 51单片机(STC89C52RC) lcd1602实验小结
  7. Base64编解码(C++版)
  8. WebBrowser响应页面中的blank开新窗口及window.close关闭本窗体
  9. 在ASP.Net和IIS中删除不必要的HTTP响应头
  10. SQL Server 2005合并列成字符串 2008-11-07