便利時計 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 

 

 

inserted by FC2 system