便利時計 VB6
前へ 目次へ 次へ 

文字盤の描画2

 10〜12の処理を考える。
 10〜12は文字が2文字なので、文字の幅を2倍すれば…。しかし、左図をよく見ると10〜12は赤色の四角は2文字目の半分まで囲まれている。すなわち、2文字のときは1.5倍すればよい。If文で10〜12のときだけ1.5倍の幅で座標を計算する。高さは変わらないのでそのままでよい。

・プログラムリスト(追加部分のみ)

    '文字盤数字表示
    suuji = 3
    suW = picTokei.TextWidth("8")   '使用文字の高さ
    suH = picTokei.TextHeight("8")  '使用文字の高さ
    For n = 0 To 2 * PI - PI / 6 Step PI / 6
        If suuji = 13 Then      '数字変更
            suuji = 1
        End If
        xb = (r - suH) * Cos(n) + xa
        yb = (r - suH) * Sin(n) + ya
        If suuji >= 10 Then
            picTokei.CurrentX = xb - suW * 1.5  'X座標設定(10-12)
        Else
            picTokei.CurrentX = xb - suW    'X座標設定(1-9)
        End If
        picTokei.CurrentY = yb - suH / 2    'Y座標設定
        picTokei.Print suuji        '数字表示
        suuji = suuji + 1
    Next n


数字を大きく

 文字盤の数字を変えてみる。文字のサイズを14ポイントにする。文字サイズはFontSizeプロパティで設定する。プログラムは、With picTokei 〜 End Withの間に書けばよい。

・プログラムリスト(追加部分のみ)

    'ピクチャボックスの設定
    With picTokei
        .Left = 0
        .Top = 0
        .Height = Form1.ScaleHeight     'フォームの高さにする
        .Width = Form1.ScaleWidth       'フォームの幅にする
        .FontSize = 14
    End With


目盛りの描画

 各数字の間に目盛りを描画する。1分単位で座標を計算する。文字盤数字は30°(π/6rad)であった。分の目盛りも同じように計算すればよい。

文字盤数字 360°÷ 12 = 30° 2πrad ÷ 12 = π/6rad
分の目盛り 360°÷ 60 = 6°  2πrad ÷ 60 = π/30rad

 目盛りは半径の一部分を描画する。目盛りの大きさは文字の高さsuHとすると次図のような座標の計算になる。

・プログラムリスト

Private Sub TokeiHyoji()
    Dim xa As Integer, ya As Integer, r As Integer
    Dim xb As Integer, yb As Integer
    Dim n As Double
    Dim suuji As Integer, suH As Integer, suW As Integer
    Dim xc As Integer, yc As Integer

    … 省 略 …
    '文字盤数字表示
    suuji = 3
    … 省 略 …
        picTokei.Print suuji        '数字表示
        suuji = suuji + 1
    Next n
    '目盛りの表示(分)
    For n = 0 To 2 * PI - PI / 31 Step PI / 30
        xb = r * Cos(n) + xa
        yb = r * Sin(n) + ya
        xc = (r - suH) * Cos(n) + xa
        yc = (r - suH) * Sin(n) + ya
        picTokei.Line (xb, yb)-(xc, yc), RGB(0, 255, 0)
    Next n
End Sub

 目盛りが数字にかかるので、目盛りのサイズは suH/2 程度がいいのかもしれない。自分の好みで変えてみよう。


ウィンドウサイズの変更

 ウィンドウサイズを変更しても文字盤の大きさは変わらない。ウィンドウを小さくすると文字盤の一部が見えなくなる。ウィンドウのサイズが変更されるとResizeイベントが発生し、Form_Resizeプロシージャが呼び出される。したがって、Form_ResizeプロシージャからTokeiHyojiプロシージャを呼び出すようにプログラムすればよい。

・プログラムリスト

Private Sub Form_Resize()
    TokeiHyoji
End Sub

 実行して、ウィンドウサイズを小さくすると左図のようになる。これは、サイズが変更されるごとにTokeiHyojiプロシージャによって文字盤が描画されて、前に描画した文字盤は残ったままとなるからである。

 対解決方法は、文字盤を描画する前に描画されている文字盤を消すことである。ピクチャボックスに描画したグラフィックスをすべて消すにはClsメソッドを使う。TokeiHyojiプロシージャの処理の一番最初(変数宣言の後)に次の文を追加する。

   picTokei.Cls

 追加後、実行してウィンドウのサイズを変更してみよう。ウィンドウの大きさに合わせて文字盤が表示されればOKである。


前へ 目次へ 次へ 
Copyright © 2001 Hiroshi Masuda 

 

 

inserted by FC2 system