当前位置: 旋转机 >> 旋转机发展 >> VBA代码解决方案第120讲如何实现图片
大家好,我们今日继续讲解VBA代码解决方案的第讲内容:如何实现图片在工作表中移动、旋转。在实际的工作中我们还会用到移动、旋转图片,今天就给大家讲解这方面的知识。其实,移动图片不难实现,我们只有改变图片的位置就可以实现,如何让图片旋转呢?这时我们会用到IncrementRotation方法。
IncrementRotation方法以指定的度数为增量,使图形绕z轴的旋转。
语法如下:expression.IncrementRotation(Increment)
参数expression是必须的,返回一个Shape对象。
参数Increment是必须的,以度为单位指定图形在水平方向的旋转量,正值使图形按顺时针方向旋转,负值使图形按逆时针方向旋转。
实例,我的工作表中有三个图形,要让他们运动起来,含移动和旋转。下面我们看实测代码:
SubMynzMoveShape()
DimiAsLong
DimjAsLong
DimTAsLong
Fori=1ToStep5
Sheets(sheet2).Shapes(1).Top=Sin(i*1*(3.14/))*+50
Sheets(sheet2).Shapes(1).Left=Cos(i*1*(3.14/))*+50
Sheets(sheet2).Shapes(1).Fill.ForeColor.RGB=i*50
Forj=1To10
Sheets(sheet2).Shapes(1).IncrementRotation-2
DoEvents
Next
Sheets(sheet2).Shapes(2).Top=Sin(i*2*(3.14/))*+
Sheets(sheet2).Shapes(2).Left=Cos(i*2*(3.14/))*+
Sheets(sheet2).Shapes(2).Fill.ForeColor.RGB=i*
Forj=1To10
Sheets(sheet2).Shapes(2).IncrementRotation-4
DoEvents
Next
Sheets(sheet2).Shapes(3).Top=Sin(i*3*(3.14/))*+
Sheets(sheet2).Shapes(3).Left=Cos(i*3*(3.14/))*+
Sheets(sheet2).Shapes(3).Fill.ForeColor.RGB=i*
Forj=1To10
Sheets(sheet2).Shapes(3).IncrementRotation-6
DoEvents
Next
Next
EndSub
代码截图:
代码解析:MynzMoveShape过程实现移动、旋转工作表中的图片并不断改变其填充的前景色。
通过代码分别给三个图形:
①设置图片的Top属性值,应用于Shape对象的Top属性设置图形的顶端到工作表顶端的距离。在循环的过程中使用Sin函数将Top属性值设置为一个圆形的弧度值。
②设置图片的Left属性值,应用于Shape对象的Left属性设置图形从左边界至A列左边界(在工作表中)或图表区左边界(在图表工作表中)的距离。在循环的过程中使用Cos函数将Left属性值设置为一个圆形的弧度值。
③代码设置图片填充的前景色随着循环的过程不断的变化。使用Fill属性返回一个FillFormat对象,FillFormat对象代表图形的填充格式,其ForeColor属性设置对象填充的前景色。
其中使用DoEvents函数转让控制权,否则达不到预计的视觉效果。
运行MynzMoveShape过程过程,工作表的图形在自身进行逆时针方向旋转的同时沿着一个圆形的弧度进行移动,并不断改变其填充的颜色。
运行前:
运行1:
运行2:
这样就是实现了我们的目的,由于上面的旋转角度和移动的速度我没有做特别的计算,只是给出了数值,实现我移动旋转即可,读者在实际的应用中可以根据实际的需要来设定这些参数。
今日内容回向:
1如何实现图形的移动?
2如何实现图形的旋转?