VB的PaintPicture与StretchBlt的异同比较
VB的PaintPicture与StretchBlt的异同比较
不太了解这两个函数的小伙伴可以先看一下下面几篇博客:
PaintPicture函数
http://blog.csdn.net/wf824284257/article/details/53221631
http://blog.csdn.net/wf824284257/article/details/53222996
StretchBlt函数
http://blog.csdn.net/wf824284257/article/details/53353868
1 函数原型
下面是StretchBlt函数声明
Declare Function StretchBlt Lib "gdi32" _
( _
ByVal hdc 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 nSrcWidth As Long, _
ByVal nSrcHeight As Long, _
ByVal dwRop As Long _
) As Long
下面是PaintPicture参数表
对象.PaintPicture picture,x1,y1,[width1],[height1],[x2],[y2],[width2],[height2],[opcode]
这两个函数作用几乎一样的,但它们有什么不同之处呢,博主今天简单的探究了一下。
2 实验过程
窗体上有2个picture控件,我们要做的是把picture1中图片复制到picture2中,下面我们看一下使用这两个函数有什么不同之处
实验窗体如下图
先定义w和h
Dim w As Integer, h As Integer
w = Picture1.ScaleWidth
h = Picture1.ScaleHeight
直接使用StretchBlt函数
Picture2.Cls
StretchBlt Picture2.hdc, 0, 0, w, h, Picture1.hdc, 0, 0, w, h, vbSrcCopy
可以看出,这不是我们想要的结果,在picture2中竟然画出了多余的边框,多余部分是picture1的右边框和picture2的左边框。
这是因为StretchBlt的参数单位是像素Pixels,而picture控件默认单位是缇Twips,1Pixel>1Twips,由于单位不统一导致了w和h远大于picture1的宽和高。
下面是直接使用PaintPicture函数
Picture2.Cls
Picture2.PaintPicture Picture1.Picture, 0, 0, w, h, 0, 0, w, h, vbSrcCopy
这是我们想要的结果
那使用StretchBlt函数达到正确的复制图片效果,应该怎么做呢?
正确做法:
Picture1.ScaleMode = vbPixels
Picture2.ScaleMode = vbPixels
w = Picture1.ScaleWidth
h = Picture1.ScaleHeightPicture2.Cls
StretchBlt Picture2.hdc, 0, 0, w, h, Picture1.hdc, 0, 0, w, h, vbSrcCopy
这下就正常了,可以看出PaintPicture的参数单位是缇Twips
下面我们测试一下将单位改成像素后的paintpicture函数会出现怎样的结果
Picture1.ScaleMode = vbPixels
w = Picture1.ScaleWidth
h = Picture1.ScaleHeight
Picture2.Cls
Picture2.PaintPicture Picture1.Picture, 0, 0, w, h, 0, 0, w, h, vbSrcCopy
可以看出,picture2上只画了左上角一点点图片,这是因为一个像素=15个缇,所以picture2的图片宽和高只有十五分之一
最后一个测试是测试paintpicture的过度抓图会出现怎样的效果。刚刚的StretchBlt在抓图范围大于picture1的大小时,会抓到窗体上,那PaintPicture会不会呢
Picture2.Cls
Picture2.PaintPicture Picture1.Picture, 0, 0, w, h, 0, 0, 2*w, 2*h, vbSrcCopy
这此我们代码抓图抓的宽和高都是picture1的宽高的两倍。结果如下
可以看出,PaintPicture的抓图会限定在对象内,不会抓到窗体或者其他控件。
结束
希望可以帮到后来的小伙伴们
VB的PaintPicture与StretchBlt的异同比较相关推荐
- VB中windows API StretchBlt,BitBlt的应用
VB中windows API StretchBlt,BitBlt的应用 1.BitBlt函数 函数原型:Declare Function BitBlt Lib "gdi32" _ ...
- 不错VB代码,收藏!!!
实现毫秒精度的延时 'Module Code: Option Explicit Declare Function QueryPerformanceFrequency Lib "kernel3 ...
- VB中使用GDI+进行图像缩放的实例
VISUAL BASIC(VB)对图形图像的处理一直以来是弱项,并受到很多人的垢病.关于图形图像的放大缩小,一般使用PICTUREBOX的PAINTPICTURE方法来处理.但这个处理方法最大的问题就 ...
- 计算机等级考试模拟题卷子,二级VB模拟试卷 1
一.选择题:35题,2分/题,共70分 下列各题A).B).C).D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分. 1.假定窗体有一个标签,名为Label1 ...
- VB6.0和VB.Net对照表
想在网上找一下VB.Net中,哪些是VB6.0遗留下来的东西,哪些是VB.Net增加的东西.结果中文的没有找到,找到了一个日文网页.简单的翻译了一下,放在这里,供需要的人参考. VB6.0和VB.Ne ...
- 在VB中如何让背景图片铺满整个MDIForm
在VB中,如何让背景图片铺满整个Form,代码如下: '* ************************************************************** * '* ...
- 第二章 VB的界面设计
轉自:http://wwww.hyit.edu.cn/edu/vb/study/index.htm 第二章 VB的界面设计 2.1 VB用户界面设计基础 1. 概述 界面的设计有两步 ...
- C语言与Java的异同
C语言与Java的异同 作者:终南 <li.zhongnan@hotmail.com> 自工作以来,先用VB.ASP这些编程:后来转用Java,对面向对象的语言有了些许了解,如今又主要 ...
- VB显示PNG等格式的图片
VB利用GDI+技术显示PNG等格式图形又一方法,通过GDI+创建DC图形场景,然后将图形转入到StdPicture,再从StdPicture中将图形显示到Form窗口,为什么要将图形转入StdPic ...
最新文章
- Ubuntu下如何用Empathy上QQ
- TYAN_S8230做硬Raid
- Java—正整数分解成质因数
- explode() 字符串转换数组
- spark sql合并小文件_如何比较Hive,Spark,Impala和Presto?
- mongodb dsl_具有Java DSL的Spring Integration MongoDB适配器
- html图片编辑器插件,js图片编辑器插件Filerobot
- Bootstrap学习(一)
- Linux基本命令之pidof和kill/killall
- 框架应该弄明白的理论问题
- docker构建自己的镜像
- Mac网易云音乐ncm格式转mp3
- 多策略调和的布谷鸟搜索算法
- 渗透测试工具——BurpSuite
- 信号、频谱、能量、功率、噪声
- 欧美顶尖大学是如何使用大数据的?
- 打破垄断!国产服务器操作系统正式发布,微软慌了。。
- 程序员之路:Gmail邮箱客户端配置
- APM, EAM, AIP都是什么鬼?
- (31)ObjectARX2015 + vs2012选择集
热门文章
- TypeScript设计模式之工厂
- 【论文笔记】Commonsense Knowledge Aware Conversation Generation with Graph Attention
- 怎么利用tombstones墓碑文件分析崩溃问题
- 远端branch和tag同名的时候,删除方法
- 常用Linux命令的基本使用(五)
- 普陀区鼓励企业科创政策包(普陀科创十条)
- 初中经典几何题,95%的同学都不会做,高手请进来 2016-03-21 16:25 几何是初中数学最主要的内容,对大多数孩子来说也是比较难的内容。而我们想要战胜这一比较难的题型,我们就需要多多练题
- 对标西湖大学、投资超460亿!这所新大学发布全球招聘公告!
- nii格式matlab,如何将nii格式文件转换为二维图像
- 【粉丝福利】秋天的第一个雷蛇键盘