腾云驾雾 发表于 2017-12-13 11:08:09

怎么用VBA在ppt中画圆,就是类似插入圆,可填充的那种?

想在office2007ppt中做一个动态放大镜的程序,没想到第一个拦路虎就是做圆,因此想请教论坛中的大神们,而且ppt录制的宏显示不了绘制圆操作

rgdjl5188 发表于 2017-12-26 09:30:52

Drawline函数就是在ppt放映模式下画点,逐点连接任意两点就是线。看怎么连接,逐点直对直的连接是线段,逐点有一定的弧度连接就是圆或圆弧。
在放映模式下,ppt窗口屏幕尺寸是720*540,使用直角坐标系,横向的是x轴,纵向的是y轴,但是它的原点在屏幕左上角,从左向右x数字越来越大,从上到下y数字越来越大,屏幕中心点坐标是(360,270)。
DrawLine使用格式:DrawLine x1,y1,x2,y2。(必须半角输入)
圆的方程:
x = r * Cos(θ),y = r * Sin(θ)。
一个圆有圆心和半径,r是半径,这个θ就是圆的角度,从0到360,圆心后面再说。因为是在放映模式下画圆,所以加上With SlideShowWindows(Index:=1).View。
我们先编半个程序,边看边说:
Private Sub CommandButton2_Click()’命令按钮
With SlideShowWindows(Index:=1).View’在放映模式下,普通模式不能画
.PointerColor.RGB = vbBlue’画笔颜色蓝色,没有这句,默认是红色
r = 30’半径是30个单位
π = 3.1415926’圆周率
π圆周率,也可以说是弧度,π是180度,2*π是360度,π/2是90度,3*π/2是270度,角度变弧度,n*π/180。接着来
For θ = 0 To π / 2 Step 0.0001 '从0度到90度
x = r * Cos(θ)’圆x坐标
y = r * Sin(θ)’圆y坐标
Step 0.0001就是画线的密度,有时叫步进,密度越大,点与点连接紧密,线条越粗;密度越小,点与点连接稀,线条越细。密度越大,画的线就越慢,像动画,机器轰隆隆响。
在这里补充下,0度到90度是从水平线经过第四象限到垂直线的,是顺时针为正的,从第四象限到第三象限、第二象限、最后是第一象限,书本中都是逆时针为正的。
SlideShowWindows(1).View.DrawLine 360 + x, 270 + y, 360 + x + 0.01, 270 + y + 0.01 '
这句就是画线了,为了让图形在屏幕的中心,所以x加了360,y加了270,不然就跑到左上角,部分图形就看不到了。X2、y2为什么加了0.01呢,就是一点一点的逐点移动,既不能移动太大,点太稀,如果前后的x不一致,如前面x为360,后面的x为361,或前面y为270,后面y为272,就是立体,也不能移动太小,机器响的太厉害!这句代码画的是东南方向凸弧。
中心点移动到(390,300),开始位置从180度到270度,就是反方向弧(西北方向凸弧)。
下面是完整代码:
Private Sub CommandButton1_Click() '正方形对角线凸凹圆弧
With SlideShowWindows(Index:=1).View
.PointerColor.RGB = vbBlue
SlideShowWindows(1).View.DrawLine 360, 270, 360, 300 '竖线
SlideShowWindows(1).View.DrawLine 360, 300, 390, 300 '横线
SlideShowWindows(1).View.DrawLine 390, 300, 390, 270 '竖线
SlideShowWindows(1).View.DrawLine 390, 270, 360, 270 '横线
r = 30
π = 3.1415926
For θ = 0 To π / 2 Step 0.0001 '
x = r * Cos(θ)
y = r * Sin(θ)
SlideShowWindows(1).View.DrawLine 360 + x, 270 + y, 360 + x + 0.01, 270 + y + 0.01 '东南方向凸弧
Next
For θ = π To π * 3 / 2 Step 0.0001 '
x = r * Cos(θ)
y = r * Sin(θ)
SlideShowWindows(1).View.DrawLine 390 + x, 300 + y, 390 + x + 0.01, 300 + y + 0.01 '西北方向凸弧
Next
End With
End Sub

画圆的,把开始角度、结束角度改下。完整代码:
Private Sub CommandButton2_Click() '
With SlideShowWindows(Index:=1).View
.PointerColor.RGB = vbBlue
r = 30
π = 3.1415926
For θ = 0 To 2*π Step 0.0001 '
x = r * Cos(θ)
y = r * Sin(θ)
SlideShowWindows(1).View.DrawLine 360 + x, 270 + y, 360 + x + 0.01, 270 + y + 0.01 '
Next
End With
End Sub

写教程类的累人,这两天编程序真的很累,每天工作十五、六个小时。所幸我在单位搞材料,才有大量时间,明年没时间来了,要挣钱养家。
下篇文章,阿基米德螺旋线、渐开线、斐波那契数列螺旋线,三个程序编好了,没来得及发表。




页: [1]
查看完整版本: 怎么用VBA在ppt中画圆,就是类似插入圆,可填充的那种?