图片自动适应大小问题,求教
要求是这样
条件:首先有一个固定大小的picturebox控件,想在上面加载不同分辨率的图片,图片大小不一
要求:1.一个不想用控件来适应图片大小(否掉autosize),第二不想图片比例变形(否掉拉伸)
2.高度方向上必须和控件等高,长度方向上可以变小(也就是图片要全部显示出来)
3.图片要在控件中居中显示
请教怎么写或用什么函数?
[解决办法]
- VB code
Option ExplicitPrivate Declare Function GetObject Lib "gdi32" Alias "GetObjectA" (ByVal hObject As Long, ByVal nCount As Long, lpObject As Any) As LongPrivate Type BITMAP bmType As Long bmWidth As Long bmHeight As Long bmWidthBytes As Long bmPlanes As Integer bmBitsPixel As Integer bmBits As LongEnd TypeDim bm As BITMAPDim hBmp As LongPublic Sub SameToPicture(ByRef pic As PictureBox, ByVal Ifilename As String)pic.Picture = LoadPicture(Ifilename)hBmp = pic.Picture.HandleGetObject hBmp, LenB(bm), bmpic.Width = bm.bmWidth * Screen.TwipsPerPixelXpic.Height = bm.bmHeight * Screen.TwipsPerPixelYEnd SubPrivate Sub Command1_Click()SameToPicture Picture1, App.Path & "\" & "124.jpg"Picture1.Move 0, 0End Sub
[解决办法]
再给你一种方法,只要一个picturebox(picture1)控件就可以了。
- VB code
Private Sub Command3_Click() 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