图片自动适应大小疑点,求教
图片自动适应大小问题,求教
要求是这样
条件:首先有一个固定大小的picturebox控件,想在上面加载不同分辨率的图片,图片大小不一
要求:1.一个不想用控件来适应图片大小(否掉autosize),第二不想图片比例变形(否掉拉伸)
2.高度方向上必须和控件等高,长度方向上可以变小(也就是图片要全部显示出来)
3.图片要在控件中居中显示
请教怎么写或用什么函数?
------解决方案--------------------
要求是这样
条件:首先有一个固定大小的picturebox控件,想在上面加载不同分辨率的图片,图片大小不一
要求:1.一个不想用控件来适应图片大小(否掉autosize),第二不想图片比例变形(否掉拉伸)
2.高度方向上必须和控件等高,长度方向上可以变小(也就是图片要全部显示出来)
3.图片要在控件中居中显示
请教怎么写或用什么函数?
------解决方案--------------------
- VB code
Option Explicit 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 Long Public 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
------解决方案--------------------
再给你一种方法,只要一个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