Option Explicit
Option Base 0
Public Sub Test1()
Const CIRCXPOS = 200 '輪の中心位置 X
Const CIRCYPOS = 160 ' Y
Const CIRCRADI = 50 '輪の半径
'
Const PETACONT = 12 '花びらの数
Const PISTRADI = 20 'めしべの半径
'---------------------------------------------------------------------------
Dim Ip As Integer, Jp As Integer, intAng As Integer
Dim intXp As Integer, intYp As Integer, dblRd As Double
Dim sngBas(0 To 6, 0 To 1) As Single
Dim sngWrk(0 To 6, 0 To 1) As Single
'
'花びらのベジェ曲線ベースデータ
sngBas(0, 0) = 30: sngBas(0, 1) = 0
sngBas(1, 0) = 0: sngBas(1, 1) = 25
sngBas(2, 0) = 0: sngBas(2, 1) = 50
sngBas(3, 0) = 30: sngBas(3, 1) = 80
sngBas(4, 0) = 60: sngBas(4, 1) = 60
sngBas(5, 0) = 40: sngBas(5, 1) = 25
sngBas(6, 0) = 30: sngBas(6, 1) = 0
'
dblRd = (4 * Atn(1)) / 180: intAng = 360 \ PETACONT
For Ip = 0 To PETACONT - 1
intXp = CIRCRADI * Cos(dblRd * (intAng * Ip)) + CIRCXPOS
intYp = CIRCRADI * Sin(dblRd * (intAng * Ip)) + CIRCYPOS
'花びらのベジェ曲線データ作成
For Jp = LBound(sngBas, 1) To UBound(sngBas, 1)
sngWrk(Jp, 0) = sngBas(Jp, 0) + intXp - (60 \ 2)
sngWrk(Jp, 1) = sngBas(Jp, 1) + intYp - (80 \ 2)
Next Jp
With ActiveDocument.Shapes.AddCurve(sngWrk)
.Fill.ForeColor.RGB = RGB(255, 20, 147) '濃いピンク
.Line.ForeColor.RGB = vbBlack
.Rotation = intAng * Ip + 90
End With
'*めしべ描画
With ActiveDocument.Shapes.AddShape(msoShapeOval, _
CIRCXPOS - PISTRADI, CIRCYPOS - PISTRADI, _
PISTRADI * 2, PISTRADI * 2)
.Fill.Patterned msoPatternSolidDiamond
.Fill.BackColor.RGB = vbYellow
.Fill.ForeColor.RGB = vbBlack
.Line.ForeColor.RGB = vbRed
End With
Next Ip
End Sub
蛇足
時期的、桜にしたいと思ったか、ベジェ曲線で描くには、僕は技量不足!