我在userform中有一个图像,它显示一个预先存在的图表,根据属性菜单,height = 246和width = 462(它没有指定单位)。我想要调整图表的大小,以便在保存图表的.GIF并将其加载到用户图像时,图像与尺寸匹配。在图表属性中,我可以更改尺寸,但只有英寸选项。如何才能使这些尺寸匹配?
答案 0 :(得分:2)
如果您使用图像控件来显示图表,则根据您的要求调整图像控件的大小以适合用户表单,然后将图像控件的“PictureSizeMode”属性设置为“fmPictureSizeModeStretch”。
答案 1 :(得分:1)
您要查找的转换因子为72.将图表的大小调整为(Image ctl height / 72)英寸(Image ctl width / 72)英寸。在你的情况下,你会给你3.42 x 6.42英寸。当您在剪辑模式下将其加载到Image ctl时,它将非常适合。如果您已选择将图片置于带有PictureAlignment的图像中心,那么在Clip和Stretch之间来回切换几乎不会产生摆动。
以下是将图表放入图像的3种方法:
1) 您可以复制工作表上已调整大小的图表以在剪贴板上获取它,然后在设计时的表格编辑器中选择您的图像ctl,然后在属性窗口中为您的图像ctl选择图片属性,然后粘贴。
2) 您可以将调整大小的图表另存为jpg(它也可以保存为bmp但文件大小变大)并使用以下命令将图表加载到Image ctl中:
myImageCtl.picture = loadPicture("C:\whatever")
3) 如果要在工作表上保留已调整大小的图表的图片并将其从那里插入到图像ctl中而不是先将其保存到文件中,则可以复制图表并将其粘贴回工作表。如果您希望图片是原始图表的实时更新副本(可能在其他工作表上),则使用PastePicture将其放回到工作表上。选择新粘贴的图片,在名称框(左上角)键入名称(myResizedChart),然后点击Return。
从这里http://www.oaltd.co.uk下载modPastePicture并安装它,(并设置对OLE Automation的引用)。
然后在您的代码中,您可以说:(假设您的原始CopyPicture是“格式图片”)
shapes("myResizedChart").CopyPicture
myImage.picture = pastePicture
最后,除非你需要Image ctl的透明属性,否则使用Frames而不是Images在表单上显示你的图片有很多好处。
答案 2 :(得分:0)
在运行时完成所有操作,使用将图表另存为GIF并将gif加载到图像控件中的方法。
userform名为F_DisplayChart。它包含一个名为imgChart的Image控件和一个名为btnClose的按钮。以下是UserForm代码模块中的代码:
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
在属性代码中,图表的大小适合图像控件,导出,加载到图像控件中,然后图表的大小将重置为原始大小。
以下是调用UserForm的代码,将活动图表传递给UserForm,然后显示表单:
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也有效,但它通常不能很好地呈现图表。