VB6之截图
今天先把主要逻辑写出来,如果有时间就实现一个真正的截图工具。
Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, _
ByVal X As Long, _
ByVal Y As Long, _
ByVal nWidth As Long, _
ByVal nHeight As Long, _
ByVal hSrcDC As Long, _
ByVal xSrc As Long, _
ByVal ySrc As Long, _
ByVal dwRop As Long) As Long
Private OnDraw As Boolean
Private OnDrag As Boolean
Private EndDraw As Boolean
Private LocalX As Single
Private LocalY As Single
Private DragX As Single
Private DragY As Single Private Sub Form_Load()
OnDraw = False
OnDrag = False
EndDraw = False Shape2().Width = *
Shape2().Height = *
For i = To
Call Load(Shape2(i))
Shape2(i).Width = *
Shape2(i).Height = *
Next Call ShowShape(False)
End Sub Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
'drag the rect
If Button = vbLeftButton And EndDraw = True Then
If X > Shape1.Left And X < (Shape1.Left + Shape1.Width) And _
Y > Shape1.Top And Y < (Shape1.Top + Shape1.Height) Then
OnDrag = True
Me.MousePointer = vbSizeAll
DragX = X
DragY = Y
Exit Sub
End If
End If 'draw the rect
If Button = vbLeftButton And OnDraw = False Then
Me.MousePointer = vbCrosshair
LocalX = X
LocalY = Y
Shape1.Left = X
Shape1.Top = Y
Shape1.Width = *
Shape1.Height = *
Call MoveShape
Call ShowShape(False)
OnDraw = True
End If
End Sub Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
'drag the rect
If Button = vbLeftButton And OnDrag = True Then
Shape1.Left = LocalX - (DragX - X)
Shape1.Top = LocalY - (DragY - Y)
Call MoveShape
Exit Sub
End If If Button = vbLeftButton And OnDraw = True Then
If X > LocalX Then
Shape1.Width = X - LocalX
Else
Shape1.Width = LocalX - X
Shape1.Left = LocalX - Shape1.Width
End If If Y > LocalY Then
Shape1.Height = Y - LocalY
Else
Shape1.Height = LocalY - Y
Shape1.Top = LocalY - Shape1.Height
End If Call MoveShape
Call ShowShape(True)
End If
End Sub Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = vbLeftButton Then
If OnDrag = True Then
OnDrag = False
LocalX = Shape1.Left
LocalY = Shape1.Top
End If
Me.MousePointer = vbDefault
Call DrawShape
OnDraw = False
EndDraw = True
ElseIf Button = vbRightButton Then
'RESET
Call ShowShape(False)
OnDraw = False
OnDrag = False
EndDraw = False
End If
End Sub Private Sub MoveShape()
Shape2().Left = Shape1.Left
Shape2().Top = Shape1.Top Shape2().Left = Shape1.Left + Shape1.Width / - ( * ) /
Shape2().Top = Shape1.Top Shape2().Left = Shape1.Left + Shape1.Width - ( * )
Shape2().Top = Shape1.Top Shape2().Left = Shape1.Left + Shape1.Width - ( * )
Shape2().Top = Shape1.Top + Shape1.Height / - ( * ) / Shape2().Left = Shape1.Left + Shape1.Width - ( * )
Shape2().Top = Shape1.Top + Shape1.Height - ( * ) Shape2().Left = Shape1.Left + Shape1.Width / - ( * ) /
Shape2().Top = Shape1.Top + Shape1.Height - ( * ) Shape2().Left = Shape1.Left
Shape2().Top = Shape1.Top + Shape1.Height - ( * ) Shape2().Left = Shape1.Left
Shape2().Top = Shape1.Top + Shape1.Height / - ( * ) /
End Sub Private Sub ShowShape(ByVal bool As Boolean)
Shape1.Visible = bool
For i = To
Shape2(i).Visible = bool
Next
DoEvents
End Sub Private Sub DrawShape()
Call ShowShape(False)
Call Picture1.Cls
Call BitBlt(Picture1.hDC, &, &, Shape1.Width / , Shape1.Height / , Me.hDC, Shape1.Left / , Shape1.Top / , vbSrcCopy)
Call ShowShape(True)
End Sub
贴张图:

VB6之截图的更多相关文章
- [置顶] VB6基本数据库应用(三):连接数据库与SQL语句的Select语句初步
同系列的第三篇,上一篇在:http://blog.csdn.net/jiluoxingren/article/details/9455721 连接数据库与SQL语句的Select语句初步 ”前文再续, ...
- vb6 控件未注册问题解决
打开项目时弹出如题错误. 另附一个帖子:http://bbs.csdn.net/topics/390580540,这个帖子讨论的不错,可以提供很多思路. 解决办法:http://rewwensoftw ...
- VS2010 开发 VB6.0 activeX控件 dll
项目源码 https://download.csdn.net/download/csdn_z_s/10427764 开发环境 操作系统: win7 64位 旗舰版 Java语言开发环境: Eclip ...
- 解决VB6.0中不能加载MSCOMCTL.OCX的错误提示
VB6.0毕竟是很古老的开发工具了,其对所使用的第三方组件依赖性比较强,例如在打开从其它电脑上拿来的VB6.0的软件(系统)的工程文件(源代码)时,经常会遇到"不能加载MSCOMCTL.OC ...
- 通过adb方式给安卓手机截图的cmd批处理文件
@echo off rem 通过adb方式截图rem 需要安装adb ,一般安装了android sdk 默认带了adb ,路径为sdk目录的android-sdk\platform-toolsr ...
- canvas与html5实现视频截图功能
这段时间一直在研究canvas,突发奇想想做一个可以截屏视频的功能,然后把图片拉去做表情包,哈哈哈哈哈哈~~ 制作方法: 1.在页面中加载视频 在使用canvas制作这个截图功能时,首先必须保证页面上 ...
- 记:MySQL 5.7.3.0 安装 全程截图
前言: 下一个班快讲MySQL数据库了,正好把服务器里面的MySQL卸了重装了一下. 截个图,作为笔记.也正好留给需要的朋友们. 目录: 下载软件 运行安装程序 安装程序欢迎界面 许可协议 查找更新 ...
- Atitit onvif 协议截图 getSnapshotUri 使用java
Atitit onvif 协议截图 getSnapshotUri 使用java 1.1. ONVIF Device Test Tool1 1.2. 源码2 1.3. 直接浏览器访问http://192 ...
- 在Ubuntu|CentOS上安装Shutter截图工具及快捷键设置
简介 Shutter前身叫GScrot,它是一款相当棒的截图软件. 通过Shutter,你可以截取包括选定区域.全屏幕.窗口.窗口内的控件甚至网页的图像.通过内置的强大插件机制,你可以在截图后,对图像 ...
随机推荐
- Java 8 Learn Notes
Main reference: [1] http://winterbe.com/posts/2014/03/16/java-8-tutorial/ [2] https://plus.google.co ...
- 在JBoss AS7中进行项目部署
http://developer.51cto.com/art/201111/305178.htm
- JS 一条原型链扯到底
在正文之前,首先要知道两点, 1.__proto__是每个js 对象的内置属性,而prototype 是函数的内置属性,也是一个对象. 2.所谓原型,指的就是每个函数对象的prototype属性. f ...
- Linux盘符绑定槽位
服务器下的硬盘主有机械硬盘.固态硬盘以及raid阵列,通常内核分配盘符的顺序是/dev/sda./dev/sdb- -.在系统启动过程中,内核会按照扫描到硬盘的顺序分配盘符(先分配直通的,再分配阵列) ...
- 初步了解asp.net运行机制
客户通过客户端浏览器输入url地址请求资源,服务器接收到客户端请求,首先为http请求分配应用程序池,然后在应用程序池中创建请求需要的管道,这个管道对http请求的各个步骤进行了分配. 当用户第一次请 ...
- rownum基本用法
对于rownum来说它是oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推,这个伪字段可以用于限制查询返回的总行数,且rownum不能以任何表的名称作为前缀. ...
- [翻译] 编写高性能 .NET 代码--第五章 通用编码与对象设计 -- 类 vs 结构体
本章介绍了本书其它部分未涉及到的一些编码和设计原则.包含了一些.NET的应用场景,有些不会造成太大危害,有些则会造成明显的问题.剩下的则根据你的使用方法会产生不同的效果.如果要对本章节出现的原则做一个 ...
- selinux导致docker启动失败
1. 问题描述:一向运行正常的一群容器,突然有一天挂掉了,再也起不来,报错如下 Error response from daemon: devmapper: Error mounting '/dev/ ...
- 简单两步快速学会使用Mybatis-Generator自动生成entity实体、dao接口和简单mapper映射(用mysql和oracle举例)
前言: mybatis-generator是根据配置文件中我们配置的数据库连接参数自动连接到数据库并根据对应的数据库表自动的生成与之对应mapper映射(比如增删改查,选择性增删改查等等简单语句)文件 ...
- 【毕业设计】基于Android的家校互动平台开发(内含完整代码和所有文档)——爱吖校推(你关注的,我们才推)
☆ 写在前面 之前答应大家的毕业答辩之后把所有文档贡献出来,现在答辩已过,LZ信守承诺,把所有文档开源到了GitHub(这个地址包含所有的代码和文档以及PPT,外层为简单的代码).还望喜欢的朋友们,不 ...