切换导航
首页
技术问答
编程语言
前端开发
移动开发
开发工具
程序设计
行业应用
CMS系统
服务器
频道导航
▸ PHP
▸ Java
▸ Java SE
▸ Python
▸ C#
▸ C&C++
▸ Ruby
▸ VB
▸ asp.Net
▸ Go
▸ Perl
▸ netty
▸ Django
▸ Delphi
▸ Jsp
▸ .NET Core
▸ Spring
▸ Flask
▸ Springboot
▸ SpringMVC
▸ Lua
▸ Laravel
▸ Mybatis
▸ Asp
▸ Groovy
▸ ThinkPHP
▸ Yii
▸ swoole
▸ HTML
▸ HTML5
▸ JavaScript
▸ CSS
▸ jQuery
▸ Bootstrap
▸ Angularjs
▸ TypeScript
▸ Vue
▸ Dojo
▸ Json
▸ Electron
▸ Node.js
▸ extjs
▸ Express
▸ XML
▸ ES6
▸ Ajax
▸ Flash
▸ Unity
▸ React
▸ Flex
▸ Ant Design
▸ Web前端
▸ 微信小程序
▸ 微信公众号
▸ iOS
▸ Android
▸ Swift
▸ Hybrid
▸ Cocos2d-x
▸ Flutter
▸ Xcode
▸ Silverlight
▸ cocoa
▸ Cordova
前端之家
VB
VB如何快带比较两幅位图
VB如何快带比较两幅位图
2019-08-19
VB
前端之家
前端之家
收集整理的这篇文章主要介绍了
VB如何快带比较两幅位图
,
前端之家
小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_
502
_0@ 虽然VB可以使用Point
函数
或API
函数
GetPiexl获得像素颜色,但速度较慢,同时,CSDN论坛里有几个朋友提出了图像比较的问题,为此,写了以下
代码
,希望能给有此需要的朋友一些启发: @H_
502
_0@
Option Explicit '* ************************************************************** * '* 程序
名称
:form1.frm '* 程序
功能
:
快速
比较两幅位图 '* 作者:lyserver '* 联系方式:http://blog.csdn.net/lyserver '* ************************************************************** * Private Declare Function GetBitmapBits Lib "gdi32" (ByVal hBitmap As Long,ByVal dwCount As Long,lpBits As Any) As Long Private Declare Function GetObjectAPI Lib "gdi32" Alias "GetObjectA" (ByVal hObject As Long,ByVal nCount As Long,lpObject As Any) As Long Private Type BITMAP '14 bytes bmType As Long bmWidth As Long bmHeight As Long bmWidthBytes As Long bmPlanes As Integer bmBitsPixel As Integer bmBits As Long End Type '为了验证
代码
,故在窗体加载时
自动
生成
两幅位图 Private Sub Form_Load() Dim Pic As Picture
Box
Me.ScaleMode = vbPixels Set Pic = Me.Controls.Add("VB.Picture
Box
","Pic1") '动态加载Picture
Box
控件 Pic.ScaleMode = vbPixels Pic.BorderStyle = 0 Pic.Appearance = 0 Pic.Move 0,100,100 '设置Picture
Box
控件高度和宽度均为100,左下角(100,100)将被忽略 Pic.AutoRedraw = True Pic.Circle (Pic.ScaleWidth / 2,Pic.ScaleWidth / 2),Pic.ScaleWidth / 2 '在控件上画一个正圆 SavePicture Pic.Image,"c:/旧圆.bmp" '保存为旧圆 Pic.Line (0,0)-(20,0) '从(0,0)到(20,0)画一条水平直线,终端点(20,0)被忽略 Pic.Line (10,10)-(20,20) '从(10,10)到(20,20)画一第斜线,20)被忽略 Pic.PSet (30,30) '在坐标点(30,30)画一个点 SavePicture Pic.Image,"c:/新圆.bmp" '保存为新圆 Me.Controls.Remove "Pic1" '
删除
Picture
Box
控件 End Sub '点击按钮后开始进行图像比较 Private Sub Command1_Click() Dim OldPic As stdole.IPictureDisp Dim NewPic As stdole.IPictureDisp Dim OldPicInfo As BITMAP,NewPicInfo As BITMAP Dim i As Long,j As Long,k As Long,c As Long Set OldPic = Me.Controls.Add("VB.Picture
Box
","OldPic") '动态
增加
一个Picture
Box
控件 Set NewPic = Me.Controls.Add("VB.Picture
Box
","NewPic") '动态
增加
一个Picture
Box
控件 Set OldPic = LoadPicture("c:/旧圆.bmp") '打开原始图像
文件
Set NewPic = LoadPicture("c:/新圆.bmp") '打开经过
修改
后的图像
文件
GetObjectAPI OldPic,Len(OldPicInfo),OldPicInfo '获得图像有关信息 GetObjectAPI NewPic,Len(NewPicInfo),NewPicInfo If OldPicInfo.bmBitsPixel <> NewPicInfo.bmBitsPixel Or OldPicInfo.bmWidth <> NewPicInfo.bmWidth Or _ OldPicInfo.bmHeight <> OldPicInfo.bmHeight Then Exit Sub '如果两幅位图大小和颜色深度不一样则取消比较 c = OldPicInfo.bmWidthBytes * OldPicInfo.bmHeight '获得图像数据字节数 Select Case OldPicInfo.bmBitsPixel '根据图像颜色深度分别处理 Case 24 '比较24位真
彩色
,此为VB默认位图格式 Dim OldData24() As Byte Dim NewData24() As Byte ReDim OldData24(c - 1) As Byte ReDim NewData24(c - 1) As Byte GetBitmapBits OldPic,c,OldData24(0) GetBitmapBits NewPic,NewData24(0) For i = 0 To OldPicInfo.bmHeight - 1 '垂直坐标 For j = 0 To OldPicInfo.bmWidth - 1 '水平坐标 k = i * OldPicInfo.bmWidthBytes + j * 3 If OldData24(k) <> NewData24(k) Or OldData24(k + 1) <> NewData24(k + 1) Or _ OldData24(k + 2) <> NewData24(k + 2) Then Debug.Print "第" & i & "行第" & j & "列像素值不同" End If Next Next Erase OldData24 Erase NewData24 Case 32 '比较32位真
彩色
Dim OldData32() As Long Dim NewData32() As Long ReDim OldData32(c / 4 - 1) As Long ReDim NewData32(c / 4 - 1) As Long GetBitmapBits OldPic,OldData32(0) GetBitmapBits NewPic,NewData32(0) For i = 0 To OldPicInfo.bmHeight - 1 '垂直坐标 For j = 0 To OldPicInfo.bmWidth - 1 '水平坐标 k = i * OldPicInfo.bmWidthBytes + j If OldData32(k) <> NewData32(k) Then Debug.Print "第" & i & "行第" & j & "列像素值不同" End If Next Next Erase OldData32 Erase NewData32 Case Else '其它格式暂不处理 End Select Me.Controls.Remove "OldPic" Me.Controls.Remove "NewPic" Set OldPic = Nothing Set NewPic = Nothing End Sub
上一篇:VB 子类化 按钮 Vista 无图片
下一篇:VB6 创建RAS "宽带连接" 代
猜你在找的VB相关文章
VB Format函数
Format[$] ( expr [ , fmt ] ) format 返回变体型 format$ 强制返回为文本 --------------...
作者:前端之家 时间:2020-08-07
vb6/ASP FORMAT MM/DD/YYYY
VB6或者ASP 格式化时间为 MM/dd/yyyy 格式,竟然没有好的办法, Format 或者FormatDateTi...
作者:前端之家 时间:2020-08-07
VB.net 捕获项目全局异常
在项目中添加如下代码:新建窗口来显示异常信息。 Namespace My ‘全局错误处理,新的...
作者:前端之家 时间:2020-08-07
实现用VB.Net/(C#)开发K/3 BOS 插件的真正可行方法
转了这一篇文章,原来一直想用C#做k3的插件开发,vb没有C#用的爽呀,这篇文章写与2011年,...
作者:前端之家 时间:2020-08-07
vb,wps,excel 分裂
Sub 分列() ‘以空格为分隔符,连续空格只算1个。对所选中的单元格进行处理 Dim m...
作者:前端之家 时间:2020-08-07
VB.NET MYSQL DataGridView 增删改查(INSERT,SELECT,UPDATE,DELETE)
Imports MySql.Data.MySqlClient Public Class Form1 ‘ GLOBAL DECLARATIONS ...
作者:前端之家 时间:2020-08-07
VB.NET 使用ADODB連接資料庫滙出到EXCEL
‘導入命名空間 Imports ADODB Imports Microsoft.Office.Interop Private Sub A1() Di...
作者:前端之家 时间:2020-08-07
vb.net 多线程運用 ping
Imports System.IO Imports System.Threading Imports System.Diagnostics Public Class F...
作者:前端之家 时间:2020-08-07
VB等待进程结束
VB运行EXE程序,并等待其运行结束 参考:https://blog.csdn.net/useway/article/details/5...
作者:前端之家 时间:2020-08-07
vb中去掉string数组的一部分
今天碰到一个问题,登陆的时候,如果不需要验证手机号为空,则不去验证手机号 因为登陆的时...
作者:前端之家 时间:2020-08-07
编程分类
PHP
Java
Java SE
Python
C#
C&C++
Ruby
VB
asp.Net
Go
Perl
netty
Django
Delphi
Jsp
.NET Core
Spring
Flask
Springboot
SpringMVC
Lua
Laravel
Mybatis
Asp
Groovy
ThinkPHP
Yii
swoole
最新文章
• VB Format函数
• vb6/ASP FORMAT MM/DD/YYY
• VB.net 捕获项目全局异常
• 实现用VB.Net/(C#)开发K/3
• vb,wps,excel 分裂
• VB文件 hash 查看器
• VB.NET MYSQL DataGridVie
• VB.NET 使用ADODB連接資料
• vb.net 多线程運用 ping
• VB等待进程结束
热门标签
更多 ►
文件时间
pythonm
相等性
PHP Warning
时间问题
问题解决
pcntl_signal
采样点
wav模块
动态文本
调用频率限制
对外暴露
多个访问请求
更新数据表
模型结构
type()方法
比较速度
手写体
sobel算子
保存模型
Image类
nn.Conv2d
pytorch1.0
kaggle
DCGAN
交并比
range()用法
打印模型
反卷积
卷积