如何保存Picture控件图片
我用SHGetFileInfo读取文件信息,用DrawIconEx将文件图片保存在Picture1中,然后再保存,图片与图标不一样,要么图片保存不全,要么图片比图标大,请...
我用SHGetFileInfo读取文件信息,用DrawIconEx将文件图片保存在
Picture1中,然后再保存,图片与图标不一样,要么图片保存不全,要么图片比图标大,请问如何设置Picture1.Width和Height,使其正好与图标文件大小一致(Picture1.AutoSize = True)。
代码如下:
retval = SHGetFileInfo(ByVal FileName, 0, shgFileInfo, Len(shgFileInfo), SHGFI_SYSICONINDEX Or SHGFI_ICON Or SHGFI_SHELLICONSIZE Or SHGFI_SMALLICON)
retval = DrawIconEx(Picture1.hdc, 0, 0, shgFileInfo.hIcon, 0, 0, 0, 0, DI_NORMAL)
Picture1.Refresh
SavePicture Picture1.Image, FileName
用VB读取一个文件的图标并保存到图片中,做到无边无痕。
不是:图片显示多大 保存多大,
而是:文件图标有多大就显示多大,然后保存多大。
以下代码加上还不行,是不是26.45836不对?
Dim smd As Integer
smd = Picture1.ScaleMode
Picture1.ScaleMode = 1
Picture1.Width = Format(Picture1.Image.Width / 26.45836, "0") * 15
Picture1.Height = Format(Picture1.Image.Height / 26.45836, "0") * 15
Picture1.ScaleMode = smd 展开
Picture1中,然后再保存,图片与图标不一样,要么图片保存不全,要么图片比图标大,请问如何设置Picture1.Width和Height,使其正好与图标文件大小一致(Picture1.AutoSize = True)。
代码如下:
retval = SHGetFileInfo(ByVal FileName, 0, shgFileInfo, Len(shgFileInfo), SHGFI_SYSICONINDEX Or SHGFI_ICON Or SHGFI_SHELLICONSIZE Or SHGFI_SMALLICON)
retval = DrawIconEx(Picture1.hdc, 0, 0, shgFileInfo.hIcon, 0, 0, 0, 0, DI_NORMAL)
Picture1.Refresh
SavePicture Picture1.Image, FileName
用VB读取一个文件的图标并保存到图片中,做到无边无痕。
不是:图片显示多大 保存多大,
而是:文件图标有多大就显示多大,然后保存多大。
以下代码加上还不行,是不是26.45836不对?
Dim smd As Integer
smd = Picture1.ScaleMode
Picture1.ScaleMode = 1
Picture1.Width = Format(Picture1.Image.Width / 26.45836, "0") * 15
Picture1.Height = Format(Picture1.Image.Height / 26.45836, "0") * 15
Picture1.ScaleMode = smd 展开
3个回答
2010-11-11
展开全部
添加几个常用文件类型的图标的大小到你的程序中,判断一下,是这些类型了,设置一下Picture1.Width、Picture1.Height为预定大小,如果不是,统一设成一定大小。
展开全部
'其他代码不变,增加判断图片大小,然后调整图片框大小并保存。
retval = SHGetFileInfo(ByVal FileName, 0, shgFileInfo, Len(shgFileInfo), SHGFI_SYSICONINDEX Or SHGFI_ICON Or SHGFI_SHELLICONSIZE Or SHGFI_SMALLICON)
retval = DrawIconEx(Picture1.hdc, 0, 0, shgFileInfo.hIcon, 0, 0, 0, 0, DI_NORMAL)
Picture1.Refresh
Dim smd As Integer
smd = Picture1.ScaleMode
Picture1.ScaleMode = 1
Picture1.Width = Format(Picture1.Image.Width / 26.45836, "0") * 15
Picture1.Height = Format(Picture1.Image.Height / 26.45836, "0") * 15
Picture1.ScaleMode = smd
SavePicture Picture1.Image, FileName
retval = SHGetFileInfo(ByVal FileName, 0, shgFileInfo, Len(shgFileInfo), SHGFI_SYSICONINDEX Or SHGFI_ICON Or SHGFI_SHELLICONSIZE Or SHGFI_SMALLICON)
retval = DrawIconEx(Picture1.hdc, 0, 0, shgFileInfo.hIcon, 0, 0, 0, 0, DI_NORMAL)
Picture1.Refresh
Dim smd As Integer
smd = Picture1.ScaleMode
Picture1.ScaleMode = 1
Picture1.Width = Format(Picture1.Image.Width / 26.45836, "0") * 15
Picture1.Height = Format(Picture1.Image.Height / 26.45836, "0") * 15
Picture1.ScaleMode = smd
SavePicture Picture1.Image, FileName
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Private Sub command1_Click()
CommonDialog1.FileName = b
CommonDialog1.Filter = "图片(*.jpg)|*.jpg"
CommonDialog1.ShowSave
Set Me.Picture1.Picture = Me.Picture1.Image
SavePicture Me.Picture1, CommonDialog1.FileName
Close #1
End Sub
本段程序复制过去即可应用 保存的图片 是 jpg 格式的 绝对 无边无痕
不过要添加一个 CommonDialog1 控件 图片 显示多大 保存多大
这个简单 你把 Picture1属性改哈 就行了
把 Picture1 AutoSize 属性设置成 true 加载图片多大 Picture1 就多大 会自动变换的 这样就满足你的要求了
CommonDialog1.FileName = b
CommonDialog1.Filter = "图片(*.jpg)|*.jpg"
CommonDialog1.ShowSave
Set Me.Picture1.Picture = Me.Picture1.Image
SavePicture Me.Picture1, CommonDialog1.FileName
Close #1
End Sub
本段程序复制过去即可应用 保存的图片 是 jpg 格式的 绝对 无边无痕
不过要添加一个 CommonDialog1 控件 图片 显示多大 保存多大
这个简单 你把 Picture1属性改哈 就行了
把 Picture1 AutoSize 属性设置成 true 加载图片多大 Picture1 就多大 会自动变换的 这样就满足你的要求了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询