我有一个显示预先存在的图表的用户窗体中的图像,根据属性菜单,高度=246,宽度=462(未指定单位)。 我希望我的图表大小调整,以便在保存为 .GIF 并加载到用户窗体图像时与其尺寸匹配。 在图表属性中,我可以更改尺寸,但只能选择英寸。 如何使这些尺寸匹配?
如果您使用图像控件展示图表,那么根据您的需求调整图像控件的大小以适应用户窗体,然后将图像控件的 “PictureSizeMode” 属性设置为“fmPictureSizeModeStretch”。
myImageCtl.picture = loadPicture("C:\whatever")
3) 如果您想在工作表上保留调整大小的图表的图片,并从那里将其插入到您的图像控件中,而不是先将其保存到文件中,您可以复制图表并将其粘贴回工作表。如果您希望图片成为原始图表(可能在其他工作表上)的实时更新副本,则使用PastePicture将其放回工作表。选择新粘贴的图片,在名称框(左上角)中键入一个名称(myResizedChart),然后按回车键。
从这里http://www.oaltd.co.uk下载modPastePicture并安装它(并设置对OLE Automation的引用)。
然后在您的代码中,您可以说:(假设您的原始CopyPicture是“Format Picture”)
shapes("myResizedChart").CopyPicture
myImage.picture = pastePicture
最后,除非您需要图像控件的透明属性,否则使用框架来显示表单上的图片比使用图像具有更多优势。
在运行时完成所有操作,使用将图表保存为GIF并将其加载到图像控件中的方法。
用户窗体名为F_DisplayChart。它包含一个名为imgChart的图像控件和一个名为btnClose的按钮。以下是用户窗体代码模块中的代码:
Private Sub btnClose_Click()
Unload Me
End Sub
Public Property Set Chart(cht As Chart)
' pass chart from calling code to userform
Dim dHeight As Double, dWidth As Double
Dim sPath As String
dHeight = cht.Parent.Height
dWidth = cht.Parent.Width
cht.Parent.Height = Me.imgChart.Height
cht.Parent.Width = Me.imgChart.Width
sPath = ThisWorkbook.Path & "\temp1.gif"
cht.Export Filename:=sPath, FilterName:="gif"
cht.Export sPath
Me.imgChart.Picture = LoadPicture(sPath)
cht.Parent.Height = dHeight
cht.Parent.Width = dWidth
End Property
Sub ShowFormWithChart()
Dim chrt As Chart
If ActiveChart Is Nothing Then Exit Sub
Set chrt = ActiveChart
With F_DisplayChart
Set .Chart = chrt
.Show
End With
End Sub
你也可以使用bmp替代gif,但文件大小会更大。jpg也可以,但通常呈现的图表效果不如gif好。