VB中如何实现图片自动缩放

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VB中如何实现图片自动缩放相关的知识,希望对你有一定的参考价值。

1.可以利用picture.mousemove()事件实现放大效果.即当鼠标经过时,图像的长宽分别加上一个固定值.实现"放大"效果.不过要注意就是,要先设置一个判断标志----放大了一次后就不要再放大了.不然,当鼠标一直在上面时,不断触发这个事件,会不断变大,与设想效果不同.
但,picutre控件本身没有鼠标离开事件,无法实现缩小.
2.幸好,窗体 form本身也有mousemove事件.并且,当鼠标经过窗体中控件表面时,
不会触发窗体本身的mousemove事件.那么.利用这点.以下程序演示实现LZ要求.
VB6中新建工程,一个窗体,窗体上放置一个picture控件.图像什么随便设置.大小也是自己设置
全部代码如下:

Dim ch As Boolean '图像改变大小标志
Private Sub Form_Load()
ch = False '程序运行时,鼠标肯定还没有经过图像,所以,假
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If ch Then '已经放大了,则缩小,当鼠标离开图像时.
Picture1.Width = Picture1.Width - 200 '这个值200和以下的300自己改吧
Picture1.Height = Picture1.Height - 300
ch = False
End If
End Sub
Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Not ch Then '鼠标经过,且,还没有放大过.放大一次.
Picture1.Width = Picture1.Width + 200 '这个值200和以下的300自己改吧
Picture1.Height = Picture1.Height + 300
ch = True
End If
End Sub
参考技术A 楼上的不好。改成下面的代码就好了。
Dim
ch
As
Boolean
'图像改变大小标志
Private
Sub
Form_Load()
ch
=
False
'程序运行时,鼠标肯定还没有经过图像,所以,假
End
Sub
Private
Sub
Form_MouseMove(Button
As
Integer,
Shift
As
Integer,
X
As
Single,
Y
As
Single)
If
ch
Then
'已经放大了,则缩小,当鼠标离开图像时.
Picture1.Width
=
Picture1.Width
-
Picture1.Width
/
6
'这个值200和以下的300自己改吧
Picture1.Height
=
Picture1.Height
-
Picture1.Height
/
6
Picture1.PaintPicture
Picture1.Picture,
0,
0,
Picture1.ScaleWidth,
Picture1.ScaleHeight
ch
=
False
End
If
End
Sub
Private
Sub
Picture1_MouseMove(Button
As
Integer,
Shift
As
Integer,
X
As
Single,
Y
As
Single)
If
Not
ch
Then
'鼠标经过,且,还没有放大过.放大一次.
Picture1.Width
=
Picture1.Width
+
Picture1.Width
/
5
'这个值200和以下的300自己改吧
Picture1.Height
=
Picture1.Height
+
Picture1.Height
/
5
Picture1.PaintPicture
Picture1.Picture,
0,
0,
Picture1.ScaleWidth,
Picture1.ScaleHeight
ch
=
True
End
If
End
Sub
Private
Sub
Picture1_Paint()
Picture1.AutoRedraw
=
True
Picture1.PaintPicture
Picture1.Picture,
0,
0,
Picture1.ScaleWidth,
Picture1.ScaleHeight
End
Sub

js控制图片自动缩放,实现铺满盒子,不变形,完全局中

此js一般用于控制图片铺满盒子,但是比例不变,并且绝对局中
原理:判断图片的高宽与盒子高宽的大小的关系,然后通过比例来控制图片的缩放及定位


<!
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> <style type="text/css"> #img{ width:600px; height:400px; position:relative; overflow:hidden; background:#996699;} </style> </head> <body> <div id="img"><img src="images/test_01.png" onload="resize_img(this,600,400)" /></div> </body> </html> <script type="text/javascript"> function resize_img(pic,w,h){//参数 var re_new_size=function(r){ //根据比率重新计算宽度 return {w:pic.width/r,h:pic.height/r}; }; var re_offset=function(n){ //根据新的宽高度返回偏移量 return {off_l:(n.w-w)*0.5,off_t:(n.h-h)*0.5}; }; var re_position=function(o,n){ //重新定位图片 pic.style.cssText="position:absolute;top:"+-o.off_t+"px;left:"+-o.off_l+"px;width:"+n.w+"px;height:"+n.h+"px;"; }; var execute=function(rate){//总执行函数 var new_size=re_new_size(rate), offset_new=re_offset(new_size); re_position(offset_new,new_size); }; //判断变量 var rate_of_w=pic.width/w, rate_of_h=pic.height/h, rate; if(rate_of_w>=1){ //图片宽度大于显示区域宽度 if(rate_of_h>=1){ //且图片高度大于显示区域高度 rate=Math.min(rate_of_w,rate_of_h); }else{ //图片高度小于显示区域 rate=pic.height/h; } }else{ //图片宽度小于显示区域宽度 if(rate_of_h>=1){ //且图片高度大于显示区域高度 rate=pic.width/w; }else{ //图片高度小于显示区域高度 rate=Math.min(rate_of_w,rate_of_h); } } execute(rate); //执行入口 } </script>

 





以上是关于VB中如何实现图片自动缩放的主要内容,如果未能解决你的问题,请参考以下文章

vc中如何让背景图片随窗体的大小变化而改变 mfc

如何禁用Windows系统对exe程序的自动缩放?

PictureBox中的图片实现鼠标滑轮控制缩放和平移

如何禁用Windows系统对exe程序的自动缩放?

vb /WebBrowser 网页中的图片按钮怎么实现模拟点击

VB中如何让WebBrowser打开一个网址后就自动跳转到另一个网址