相关推荐
-
Screen_image.rar_delphi 屏幕传输_图像传输_屏幕
用delphi编程实现的屏幕图像的快速传输
-
delphi报警声音 Beep、MessageBeep 和 Windows.Beep
我的办法,增加一个timer 设置间隔100ms,通过timer的使能否,控制报警声音开关procedure TForm1.Timer1Timer(Sender: TObject);begin Windows.Beep(1200+i_f,10+i_f); if i_f begin inc(i_f); endend; =================
-
CopyFromScreen方法的使用案例
写在前面:有没有想过屏幕捕捉是很简单的事情?至少,在.Net上面,是很简单的事情,还有一个方法专门提供了这个功能,它就是CopyFromScreen方法,是Graphics的实例的一个方法,可以将当前屏幕上面的指定区域捕捉下来。如果对这个功能做进一步的扩展,很容易就可以做出一个像红蜻蜓一样的屏幕捕捉工具,当然,专业水平肯定还不及人家的产品的。效果图效果图中显示有多个控件,其中重要的是名为“捕捉
-
利用DELPHI中Canvas绘图
以往开发Windows图形软件大多用 VC++作为开发工具,VC++强大的图形功能可以让程序员编制出许多优秀的与图形相关的软件。VC++中与绘图相关的函数都封装在CDC及其衍生的CClientDC,CpaintDC,CwindowDC中。Delphi中也有一个与CDC相类似的类Tcanvas, 它封装了Delphi 中的绘图函数。我们可以把Delphi和VC中相同或相近的方法做个有趣的比较
-
在Delphi中读取另一台计算机的屏幕
在Delphi中读取局域网内另一台计算机的屏幕路方 2000-10-25 09:50:30[摘要] 编写过Winsock应用程序的程序员都知道,编写Winsock应用程序绝不是一件轻而易举的事,您不得直接与复杂的Winsock中的Api打交道,幸运的是,Delphi4中的Tclientsocket 和Tserversocket封装了Windo
-
用delphi实现冰河的远程屏幕操作功能
分为服务端和客户端两个部分,虽然不是一个完整的delphi工程,但是我们关心的其中有用的代码,对吧?下面是服务端unit ServerDlg;interfaceusesWindows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,ExtCtrls, StdCtrls, WinSock, ScktComp,
-
请问怎么实现从粘贴板粘贴图片(JPEG格式)到Image 中
请问怎么实现从粘贴板粘贴图片(JPEG格式)到Image 中 Delphi / Windows SDK/APIhttp://www.delphi2007.net/DelphiMultimedia/html/delphi_2006120620561481.html 在网上找到这个程序,但是不支持粘贴JPEG的图像,请问应该怎么处理? IF Clipboard.HasFor...
-
关于bitmap的赋值和复制【谨记】
起初我以为bitmap的复制只是用“=”号做连接。。。其实大错特错 bitmapA=bitmapB 并不能把b复制给a。 而是将b的引用赋值给a。。。。因为我做了这样的试验,证明了这点。 mFilterGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override
-
利用Delphi的Tbitmap控件抓取屏幕图象
相信绝大部分电脑爱好者都使用过不同种类的抓图软件抓取屏幕图形。在本文中,作者要向大家介绍的是利用Delphi的TBitmap控件进行屏幕上任意窗口图形的抓取。同时文章中还有如何利用Delphi的扩展消息处理功能为Delphi的窗口添加热键和在任务栏上添加图标的技巧。 程序的主要思路是:当按下为窗口建立的热键后,首先获得光标所在的窗口的矩形区域,然后建立一个TBitmap对象,将矩形区域复制到T
-
delphi canvas 属性知识
Delphi 画布对象 CanvasDelphi具有图形、图像处理能力,可在组件或窗体中绘制各种图形。Canvas 是TCanvas类的一个系统定义对象,称为画布对象,通常作为其他组件的一个属性出现,不会被单独使用。每一个TControl的派生类都有Canvas的属性。例如Form的Canvas属性可在窗体的客户区域绘图。由于Canvas是运行时的属性,在程序执行时才能获得,所以必须通过编写程序来完成设置。canvas的主要属性有Pen(画笔)、Brush(画刷)、pixels(像素)、penpos(画笔的
-
两个 CopyRect
为什么80%的码农都做不了架构师?>>> ...
-
delphi绘图canvas及应用(转)
<br />delphi绘图canvas及应用2010年03月25日 星期四 14:59DELPHI为编程者提供了一个灵活的绘图场所,CANVAS类,在DELPHI中的很多控件都具有此属性,使编程者可以 <br />在这些控件的表面随心所欲的绘图,这对完善用户界面或者制作一些屏幕特技都有着非凡的作用。 <br />一、CANVAS必备基本知识 <br />1.具有CANVAS属性的控件 <br />TBitmap,TComboBox,TDBComboBox,TDBGrid,TDBListBo
-
Delphi 屏 幕 拷 贝 程 序
Borland 公 司 的 天 才 设 计 师 们 用 画 布(Tcanvas) 对 象 封 装 了Windows 的 大 部 分 图 形 输 出 功 能, 这 使 得 我 们 可 以 通 过 他 以 更 直 观 的 方 式 和Windows 的 屏 幕 打 交 道, 而 不 必 关 心 令 人 头 疼 的Windows API 函 数。 下 面 的 一 小 段 程 序 就 可 以 实 现 整 个 屏 幕 的 图 象 拷 贝 了。 var //变量声明 Fullscreen:Tbitmap; FullscreenCanvas:TCanvas; dc:HDC; //------------------------------------------------------------ DC := GetDC (0); //取得屏幕的 DC,参数0指的是屏幕 FullscreenCanvas := TCanvas.Create; //创建一个CANVAS对象 FullscreenCanvas.Handle := DC; //将屏幕的DC赋给HANDLE Fullscreen.Canvas.CopyRect (Rect (0, 0, screen.Width,screen.Height), fullscreenCanvas, Rect (0, 0, Screen.Width, Screen.Height)); //把整个屏幕复制到BITMAP中 FullscreenCanvas.Free; //释放CANVAS对象 ReleaseDC (0, DC); //释放DC //SCREEN对象是DELPHI预先定义的屏幕对象,直接使用就行了。 ---- 看 了 以 上 代 码, 你 就 会 发 现 用DELPHI 写 屏 幕 拷 贝 程 序 的 确 很 简 单。 ---- 当 然 要 写 一 个 实 用 的 屏 幕 拷 贝 程 序, 光 靠 上 述 代 码 是 不 够 的, 下 面 讲 一 下 主 要 的 编 程 思 路: ---- 1. 全 屏 幕 拷 贝 的 实 现 ---- 首 先 隐 藏 拷 屏 程 序, 延 长 一 定 时 间 后, 利 用 上 述 的 程 序 即 可 实 现 屏 幕 的 拷 贝。 ---- 2. 区 域 拷 贝 的 实 现 ---- 要 实 现 区 域 拷 贝 要 用 个 小 技 巧, 首 先 调 用 全 屏 幕 拷 贝 程 序 把 整 个 屏 幕 拷 贝 下 来, 然 后 把 拷 贝 下 来 的 图 象 显 示 在 屏 幕 上, 之 后 就 可 以 让 用 户 在 上 面 选 择 需 要 的 区 域, 最 后 才 将 用 户 选 定 的 区 域 复 制 下 来。 ---- 编 程 实 现: ---- 1. 首 先 用DELPHI3 开 一 个 工 程。 ---- 2. 在FORM 上 放 置 一 个TPANEL 元 件, 设 置ALIGN=ALTOP, 再 选 部 件 条ADDITIONAL 上 的TSCROLLBOX, 放 到FORM 上, 设 置ALIGN=ALCLIENT, 然 后 在SCROLLBOX 上 放 置 一 个 TIMAGE 对 象。 ---- 3. 在PANEL 上 放 置4 个 按 钮, 分 别 为FULL SCREEN,REGIN,SAVE,EXIT。 ---- 4. 容 易 干 的 先 干, 在EXIT 按 钮 的CLICK 事 件 里 写 下 代 码 procedure TForm1.ExitClick(Sender: TObject); begin close; end; ---- 5. 接 着 是 实 现 全 屏 幕 拷 贝 了, 在FROM 上 放 置 一 个 记 时 器TTIMER,ENABLED 设 为 FALSE,INTERVAL 设 为500, 也 就 是 半 秒 钟 激 活 一 次。 双 击TIMER 部 件, 写 上 如 下 的 代 码。 procedure TForm1.Timer1Timer(Sender: TObject); var Fullscreen:Tbitmap; FullscreenCanvas:TCanvas; dc:HDC; begin timer1.Enabled:=false; //取消时钟 Fullscreen := TBitmap.Create; //创建一个BITMAP来存放图象 Fullscreen.Width := screen.width; Fullscreen.Height := screen.Height; DC := GetDC (0); //取得屏幕的 DC,参数0指的是屏幕 FullscreenCanvas := TCanvas.Create; //创建一个CANVAS对象 FullscreenCanvas.Handle := DC; Fullscreen.Canvas.CopyRect (Rect (0, 0, screen.Width, screen.Height), fullscreenCanvas, Rect (0, 0, Screen.Width, Screen.Height)); //把整个屏幕复制到BITMAP中 FullscreenCanvas.Free; //释放CANVAS对象 ReleaseDC (0, DC); //释放DC //******************************* image1.picture.Bitmap:=fullscreen;//拷贝下的图象赋给IMAGE对象 image1.Width:=fullscreen.Width; image1.Height:=fullscreen.Height; fullscreen.free; //释放bitmap form1.WindowState:=wsNormal; //复原窗口状态 form1.show; //显示窗口 messagebeep(1); //BEEP叫一声,报告图象已经截取好了。 end; ---- 6. 接 下 去FULLSCREEN 按 钮 上 的 代 码 就 很 简 单 了。 procedure TForm1.FullscreenClick(Sender: TObject); begin form1.WindowState:=wsMinimized; //最小化程序窗口 form1.hide; //把程序藏起来 timer1.enabled:=true; //打开记时器 end; ---- 7. 拷 贝 到 了 图 象 当 然 要 存 起 来 了,SAVE 按 钮 就 有 了 用 武 之 地, 我 们 写 下 如 下 代 码。 procedure TForm1.Save1Click(Sender: TObject); begin if savedialog1.Execute then begin form1.Image1.Picture.SaveToFile(savedialog1.filename) end; end; ---- 8. 下 面 是 区 域 拷 贝 的 实 现。 再New 一 个FORM,BorderStype 设 为 bsNone, 这 样 能 够 显 示 为 全 屏 幕, 上 面 放 置 一 个TIMAGE 部 件,ALIGN 设 为ALCLIENT, 另 外 放 置 一 个TTIMER 部 件,TIMER 部 件 的 程 序 跟 上 面 的 很 象, 因 为 它 首 先 要 实 现 的 是 全 屏 幕 的 拷 贝。 procedure TForm2.Timer1Timer(Sender: TObject); var Fullscreen:Tbitmap; FullscreenCanvas:TCanvas; dc:HDC; begin timer1.Enabled:=false; Fullscreen := TBitmap.Create; Fullscreen.Width := screen.width; Fullscreen.Height := screen.Height; DC := GetDC (0); FullscreenCanvas := TCanvas.Create; FullscreenCanvas.Handle := DC; Fullscreen.Canvas.CopyRect (Rect (0, 0, screen.Width, screen.Height), fullscreenCanvas, Rect (0, 0, Screen.Width, Screen.Height)); FullscreenCanvas.Free; ReleaseDC (0, DC); image1.picture.Bitmap:=fullscreen; image1.Width:=fullscreen.Width; image1.Height:=fullscreen.Height; fullscreen.free; form2.WindowState:=wsMaximized; form2.show; messagebeep(1); foldx:=-1; foldy:=-1; image1.Canvas.Pen.mode:=pmnot; //笔的模式为取反 image1.canvas.pen.color:=clblack; //笔为黑色 image1.canvas.brush.Style:=bsclear; //空白刷子 flag:=true; end; ---- 9.TIMAGE 部 件 上 有 两 个 事 件 的 程 序 需 要 编 写, 一 个 是ONMOUSEDOWN, 另 一 个 是ONMOUSEMOVE。 ---- 10. 可 以 回 头 看 看 区 域 拷 贝 的 思 路, 此 时 需 要 作 区 域 拷 贝 的 屏 幕 我 们 已 经 得 到, 也 显 示 在 屏 幕 上 了, 按 下 鼠 标 左 键 是 区 域 的 原 点, 此 后 移 动 鼠 标, 将 有 一 个 矩 形 在 原 点 和 鼠 标 之 间, 它 会 随 着 鼠 标 的 移 动 而 变 化, 再 次 按 下 鼠 标 的 左 键, 此 时 矩 形 所 包 含 的 区 域 就 是 我 们 要 得 到 的 图 象 了。 ---- 11. 所 以MOUSEDOWN 有 两 次 响 应 的 处 理, 见 以 下 程 序。 procedure TForm2.Image1MouseDown (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var width,height:integer; newbitmap:Tbitmap; begin if (trace=false) then // TRACE表示是否在追踪鼠标 begin //首次点击鼠标左键,开始追踪鼠标。 flag:=false; with image1.canvas do begin moveTo(foldx,0); LineTo(foldx,screen.height); moveto(0,foldy); lineto(screen.width,foldy); end; x1:=x; y1:=y; oldx:=x; oldy:=y; trace:=true; image1.Canvas.Pen.mode:=pmnot; //笔的模式为取反 //这样再在原处画一遍矩形,相当于擦除矩形。 image1.canvas.pen.color:=clblack; //笔为黑色 image1.canvas.brush.Style:=bsclear;//空白刷子 end else begin //第二次点击,表示已经得到矩形了, //把它拷贝到FORM1中的IMAGE部件上。 x2:=x; y2:=y; trace:=false; image1.canvas.rectangle(x1,y1,oldx,oldy); width:=abs(x2-x1); height:=abs(y2-y1); form1.image1.Width:=Width; form1.image1.Height:=Height; newbitmap:=Tbitmap.create; newbitmap.width:=width; newbitmap.height:=height; newbitmap.Canvas.CopyRect (Rect (0, 0, width, Height),form2.image1.canvas, Rect (x1, y1,x2,y2)); //拷贝 form1.image1.picture.bitmap:=newbitmap; //放到FORM的IMAGE上 newbitmap.free; form2.hide; form1.show; end; end; ---- 12.MOUSEMOVE 的 处 理 就 是 在 原 点 和 鼠 标 当 前 位 置 之 间 不 断 地 画 矩 形 和 擦 除 矩 形。 procedure TForm2.Image1MouseMove (Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if trace=true then //是否在追踪鼠标? begin //是,擦除旧的矩形并画上新的矩形 with image1.canvas do begin rectangle(x1,y1,oldx,oldy); Rectangle(x1,y1,x,y); oldx:=x; oldy:=y; end; end else if flag=true then //在鼠标所在的位置上画十字 begin with image1.canvas do begin moveTo(foldx,0); //擦除旧的十字 LineTo(foldx,screen.height); moveto(0,foldy); lineto(screen.width,foldy); moveTo(x,0); //画上新的十字 LineTo(x,screen.height); moveto(0,y); lineto(screen.width,y); foldx:=x; foldy:=y; end; end; end; ---- 13. 好 了, 让 我 们 回 过 头 来 编 写REGION 按 钮 的 代 码。 procedure TForm1.RegionClick(Sender: TObject); begin form1.Hide; form2.hide; form2.Timer1.Enabled:=true; end; ---- 好 了, 我 们 终 于 胜 利 完 工 了, 赶 快 运 行 一 遍, 把 漂 亮 的 屏 幕 拷 下 来 ! 瞧 DELPHI 不 仅 是 一 个 优 秀 的 数 据 库 开 发 工 具, 而 且 是 一 个 优 秀 的 编 写WINDOWS 程 序 的 好 帮 手。 让 我 们 不 禁 赞 叹: 伟 大 的DELPHI !
-
Delphi中canvas(画布)
在DELPHI为编程者提供了一个灵活的绘图场所,即本文所述的CANVAS类,在DELPHI中的很多控件都具有此属性,使编程者可以在这些的控件的表面随心所欲的绘图,这对完善用户界面或者制作一些屏幕特技都有着非凡的作用,下面举例说明几种特殊屏幕效果的形成过程。一、CANVAS必备基本知识:1.具有CANVAS属性的控件:TBitmap...
-
Delphi图像处理 -- 获取窗口或设备的图像数据
阅读提示: 《Delphi图像处理》系列以效率为侧重点,一般代码为PASCAL,核心代码采用BASM。 《C++图像处理》系列以代码清晰,可读性为主,全部使用C++代码。 尽可能保持二者内容一致,可相互对照。 本文代码必须包括文章《Delphi图像处理 -- 数据类型及公用过程》中的ImageData.pas单元。 CSDN论坛中,经常看到有关截屏的贴。所谓截屏,指
-
使用 CopyFromScreen 打印当前窗体的副本
使用 CopyFromScreen 打印当前窗体的副本