Excel VBA GDI32命令による
Turtleグラフィックス描画命令ライブラリの利用例
GDI32命令によるTurtleグラフィックスを使用するための手順例
- Module2にGDI32命令によるグラフィックス描画命令ライブラリを貼り付けます。
- ユーザーフォームを挿入します。ユーザーフォームのサイズをViewportと同じかそれより大きく設定してください。
- Module1にFormを表示するためのプロシージャを記入します。ワークシートにボタンを挿入し、「マクロの登録」でFormを表示するためのプロシージャと関連付けます。
Formを表示するためのプロシージャ
Sub DrawOnForm() UserForm1.Show End Sub
- Formにボタンを挿入します。
- フォームモジュールのCommandButtonX_Clickプロシージャに、Turtleグラフィックスを表示するプロシージャに対するCALL命令を記入します。
Form上のボタンをクリックした時に起動されるプロシージャ
Private Sub CommandButton1_Click() TurtleTest01 ' 多角形を描く End Sub Private Sub CommandButton2_Click() TurtleTest02 ' スパイラル End Sub Private Sub CommandButton3_Click() DrawKochCurve ' Koch曲線 End Sub Private Sub CommandButton4_Click() DrawTree ' 樹形図(Tree) End Sub Private Sub CommandButton5_Click() SetViewPort 0, 0, 699, 629 gClear ' 画面消去 End Sub
- フォームモジュールまたはModule1などに、デバイスコンテキストの取得とTurtleグラフィックスを表示するプロシージャを記入します。
実行結果についてはAddShape命令によるライブラリの利用例の解説を参照してください。
デバイスコンテキストの取得とTurtleグラフィックスの表示
Sub TurtleTest01() ' デバイスコンテキストの取得 monhdc = GetForegroundWindow() myhdc = GetDC(monhdc) If myhdc = 0 Then Exit Sub Dim i, j, side InitializeTurtleGraphics side = 100 For i = 3 To 9 For j = 1 To i TGMoveL side TGTurn 360 / i Debug.Print gTGCurrentX, gTGCurrentY Next j Next i End Sub Sub TurtleTest02() ' デバイスコンテキストの取得 monhdc = GetForegroundWindow() myhdc = GetDC(monhdc) If myhdc = 0 Then Exit Sub Dim length, angle, d InitializeTurtleGraphics length = 300 angle = 89 d = 2 TGSetPoint 600, 0 Do While length > d TGMoveL length TGTurn angle length = length - d Loop End Sub Sub DrawKochCurve() ' デバイスコンテキストの取得 monhdc = GetForegroundWindow() myhdc = GetDC(monhdc) If myhdc = 0 Then Exit Sub Dim i, length, n n = 4 ' コッホ次数 length = 5 ' 0次の長さ InitializeTurtleGraphics For i = 1 To 3 Koch n, length TGTurn -120 Next i End Sub Sub Koch(n, length) If n = 0 Then TGMoveL length Else Koch n - 1, length TGTurn 60 Koch n - 1, length TGTurn -120 Koch n - 1, length TGTurn 60 Koch n - 1, length End If End Sub Sub DrawTree() ' デバイスコンテキストの取得 monhdc = GetForegroundWindow() myhdc = GetDC(monhdc) If myhdc = 0 Then Exit Sub Dim myLength, myTurn, myRatio myLength = 200 ' 0次の枝の長さ myTurn = 60 ' 折れ曲がりの角度 myRatio = 0.6 ' 枝の長さの比率 InitializeTurtleGraphics TreeAll myLength, myTurn, myRatio End Sub Sub TreeAll(myLength, myTurn, myRatio) If myLength < 5 Then Exit Sub TGMoveL myLength, vbGreen TGTurn -myTurn TreeAll myLength * myRatio, myTurn, myRatio TGTurn myTurn TGTurn myTurn TreeAll myLength * myRatio, myTurn, myRatio TGTurn -myTurn TGMoveL -myLength, vbGreen End Sub
Excelファイル tg-gdi32.xlsmのダウンロード
Turtleグラフィックス・ライブラリと「多角形を描く」、「スパイラル」、「Koch曲線く」および「樹形図」のプログラムを
含みます。