要求是这样
条件:首先有一个固定大小的picturebox控件,想在上面加载不同分辨率的图片,图片大小不一
要求:1.一个不想用控件来适应图片大小(否掉autosize),第二不想图片比例变形(否掉拉伸)
2.高度方向上必须和控件等高,长度方向上可以变小(也就是图片要全部显示出来)
3.图片要在控件中居中显示请教怎么写或用什么函数?
条件:首先有一个固定大小的picturebox控件,想在上面加载不同分辨率的图片,图片大小不一
要求:1.一个不想用控件来适应图片大小(否掉autosize),第二不想图片比例变形(否掉拉伸)
2.高度方向上必须和控件等高,长度方向上可以变小(也就是图片要全部显示出来)
3.图片要在控件中居中显示请教怎么写或用什么函数?
解决方案 »
- 如何读取注册表键值
- 为什么TextBox不能输入俄文?
- 请教:VB中如何使用USB控件?
- 如何判断Treeview中的节点是父节点还是子节点
- 用SETUP FACTORY怎么样在安装时将程序一起添加到启动组里面.
- RecordSet的Filter字符串中是否可以使用 "ExamineeID in ('039010001','039010002','039010003')"的形式
- 在Imagelist控件中加载WINXP风格的图标后,为什么显示出来完全没有XP图标的那种平滑效果???
- 用SQL语句与VB的效率问题
- vb的工程属性窗口里面出现乱码,怎么解决?
- 急:关于Crystal Report 6.0升级到Crystal Report 8.0
- 二进制图片加水印
- VB 6 看不见调色板颜色 查找替换对话框输入中文乱码
Private Sub Command1_Click()
Set Image1.Container = Picture1
Image1.Stretch = False
Image1.Picture = LoadPicture("C:\Documents and Settings\Administrator\My Documents\My Pictures\77553_1261644150946r.jpg")
Image1.Stretch = True
Image1.Width = Image1.Width * (Picture1.Height / Image1.Height)
Image1.Height = Picture1.Height
Image1.Move (Picture1.Width - Image1.Width) / 2, 0
End Sub
Private Sub Command2_Click()
Image1.Visible = False
Image1.Stretch = False
Image1.Picture = LoadPicture("C:\Documents and Settings\Administrator\My Documents\My Pictures\2009112209293733.gif")
Picture1.PaintPicture Image1, (Picture1.Width - Image1.Width * (Picture1.Height / Image1.Height)) / 2, 0, Image1.Width * (Picture1.Height / Image1.Height), Picture1.Height, , , Image1.Width, Image1.Height
Image1.Picture = LoadPicture("")
End Sub
Private Declare Function GetObject Lib "gdi32" Alias "GetObjectA" (ByVal hObject As Long, ByVal nCount As Long, lpObject As Any) As Long
Private Type BITMAP
bmType As Long
bmWidth As Long
bmHeight As Long
bmWidthBytes As Long
bmPlanes As Integer
bmBitsPixel As Integer
bmBits As Long
End Type
Dim bm As BITMAP
Dim hBmp As LongPublic Sub SameToPicture(ByRef pic As PictureBox, ByVal Ifilename As String)
pic.Picture = LoadPicture(Ifilename)
hBmp = pic.Picture.Handle
GetObject hBmp, LenB(bm), bm
pic.Width = bm.bmWidth * Screen.TwipsPerPixelX
pic.Height = bm.bmHeight * Screen.TwipsPerPixelY
End Sub
Private Sub Command1_Click()
SameToPicture Picture1, App.Path & "\" & "124.jpg"
Picture1.Move 0, 0
End Sub
Public Sub SameToPic(ByRef pic As PictureBox, ByVal Ifilename As String)
pic.Picture = LoadPicture(Ifilename)
pic.PaintPicture pic.Picture, 0, 0, pic.Width, pic.Height, 0, 0
End Sub
2.调整大小, 以固定的PictureBox为准, 使用PaintPicture重画宽高不超过PictureBox,要先计算宽高比例,宽高以何者较长为准, 依比例计算出新的图片的宽度与高度.
3.新图片在PictureBox居中, 计算新的图像的Left与Top
http://hi.baidu.com/cbm666/blog/item/96e19b50858e436884352454.html
Dim p As Picture
Set p = LoadPicture("C:\Documents and Settings\Administrator\My Documents\My Pictures\2009112209300545.jpg")
Picture1.PaintPicture p, (Picture1.Width - ScaleX(p.Width) * Picture1.Height / ScaleY(p.Height)) / 2, 0, _
ScaleX(p.Width) * (Picture1.Height / ScaleY(p.Height)), Picture1.Height, , , ScaleX(p.Width), ScaleY(p.Height)
Set p = Nothing
End Sub