便利時計 VB6 |
文字盤の描画
時計の文字盤や指針は、フォームに直接描かずに、ピクチャボックスに描くことにする。
新規フォームを用意し、プロパティを次のように設定する。
Caption … アナログ時計、 Height … 4800、 Width … 4800
ピクチャボックス(picTokei)
(オブジェクト名) … picTokei、 BackColor … &H00FFFFFF& (白色)
AutoRedraw …True
ここではピクチャボックス(picTokei)に対してグラフィックを描くので、AutoRedrawプロパティもピクチャボックスに対して設定する。ピクチャボックスの位置、大きさは適当でよい。
ピクチャボックスの設定や時計の描画の処理はすべてサブプロシージャTokeiHyojiに書いていくことにする。
・プログラムリストT
Option Explicit Private Sub Form_Load() TokeiHyoji End Sub Private Sub TokeiHyoji() 'ピクチャボックスの設定 With picTokei .Left = 0 .Top = 0 .Height = Form1.ScaleHeight 'フォームの高さにする .Width = Form1.ScaleWidth 'フォームの幅にする End With End Sub
ピクチャボックスの高さ(Height)と幅(Width)をフォームに合わせる。
実行すると、左図のようにフォームいっぱいにピクチャボックスが広がる。
フォームのScaleHeightプロパティをHeightプロパティにするとピクチャボックスがフォームをはみ出るので注意すること。
・プログラムリストU
Option Explicit Const PI = 3.14159 Private Sub Form_Load() TokeiHyoji End Sub Private Sub TokeiHyoji() Dim xa As Integer, ya As Integer, r As Integer Dim xb As Integer, yb As Integer Dim n As Double 'ピクチャボックスの設定 With picTokei .Left = 0 .Top = 0 .Height = Form1.ScaleHeight 'フォームの高さにする .Width = Form1.ScaleWidth 'フォームの幅にする End With '文字盤外枠表示 xa = picTokei.ScaleWidth / 2 '円の中心座標計算 #1 ya = picTokei.ScaleHeight / 2 If xa < ya Then '半径計算 #2 r = xa * 0.9 Else r = ya * 0.9 End If picTokei.Circle (xa, ya), r, RGB(0, 0, 255) '文字盤外枠表示 #3 '文字盤印表示 For n = 0 To 2 * PI Step PI / 6 xb = r * Cos(n) + xa yb = r * Sin(n) + ya picTokei.Circle (xb, yb), 100 Next n End Sub
文字盤外枠の円(単に外枠という)を描画する。(#1)外枠の中心座標を計算し、変数xa,yaに記憶する。ピクチャボックスの半分の位置を中心座標とする。(#2)外枠の半径はピクチャボックスの高さか幅のうち小さい方の9割の長さとし、変数rに記憶する。(#3)中心座標(xa,ya)、半径r、青色で外枠を描く。
文字盤に12個のマークを描画する。数字はあとにして、半径100の円とする。For文で0度から360度まで30度ずつの間隔で円を描く。
12カ所の座標を計算するには上図のように三角関数が必要になる。VisualBasicだけでなく多くの言語で三角関数に指定する角度はラジアン(rad)単位となっている。したがって、プログラムでは、For文で0radから2πradまでπ/6radずつの間隔で円を描くことになる。このときの各円の中心座標(xb,yb)は外枠の中心座標(xa,ya)からの位置になるので、次のような式になる。
xb = r * Cos(n) + xa
yb = r * Sin(n) + ya
Copyright © 2001 Hiroshi Masuda |