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