如何实现已有图像的按比例缩放?

csh79 2003-05-09 05:54:33
请问 如何实现已有图像的按比例缩放?

效果类似于画图板中对图像的缩放功能!
...全文
195 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
自由之眼 2003-05-10
可不可以这样
借助一个隐藏的图片框转换?笨办法
我写过的一个函数,将图片缩略到另外一个图片框。
Private Function smallPic() '将图片缩小至缩略图
Dim PicErr As Long
If Picture1.Width <= Picture2.Width And Picture1.Height <= Picture2.Height Then
'显示原有大小
PicErr = BitBlt(Picture1.hdc, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight, Picture2.hdc, 0, 0, SRCCOPY)
Else
'将图片缩小
Dim C_Width, C_Height As Integer
If Picture1.Width > Picture1.Height Then '缩小宽度
'计算比例
C_Width = Picture2.ScaleWidth
C_Height = C_Width * (Picture1.ScaleHeight / Picture1.ScaleWidth)
Else
'计算比例
C_Height = Picture2.ScaleHeight
C_Width = C_Height * (Picture1.ScaleWidth / Picture1.ScaleHeight)
End If
PicErr = StretchBlt(Picture1.hdc, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight, Picture2.hdc, 0, 0, C_Width, C_Height, SRCCOPY)
End If
End Function
然后你再把Picture2的图片赋值给Picture1,应该可以的。
回复
mtoad 2003-05-09
gz
回复
Rozre 2003-05-09
up
回复
csh79 2003-05-09
在原有图像的基础上按任意比例缩放!
回复
Sean918 2003-05-09
按原有比例还是按任意比例?
回复
自由之眼 2003-05-09
借用API函数,代码很简单,自己写一个就行.
StretchBlt

VB声明
Declare Function StretchBlt Lib "gdi32" Alias "StretchBlt" (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
说明
将一幅位图从一个设备场景复制到另一个。源和目标DC相互间必须兼容。这个函数会在设备场景中定义一个目标矩形,并在位图中定义一个源图象。源矩形会根据需要进行伸缩,以便与目标矩形的大小相符
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
hdc Long,目标设备场景
x,y Long,目标矩形左上角的x,y坐标,以逻辑坐标表示
nWidth,nHeight Long,目标矩形的宽度和高度,以逻辑坐标表示
hSrcDC Long,源设备场景。如光栅运算未指定一个源,则这个参数应为零
xSrc,ySrc Long,用源DC的逻辑坐标表示的源矩形左上角位置
nSrcWidth,nSrcHeight Long,分别指定用逻辑单位(以源DC为基础)传输的一幅图象的宽度和高度。如其中有一个参数的符号(指正负号)与对应的目标参数不符,位图就会在对应的轴上作镜像转换处理
dwRop Long,传输过程中进行的光栅运算。如刷子属于光栅运算的一部分,就使用选入目标DC的刷子
注解
可用GetDeviceCaps函数判断特定的设备场景是否支持此函数
不可选择对源位图进行剪切或旋转处理,源位图也不能是一个图元文件设备场景

回复
相关推荐
发帖
VB基础类
创建于2007-09-28

7493

社区成员

VB 基础类
申请成为版主
帖子事件
创建了帖子
2003-05-09 05:54
社区公告
暂无公告