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

アナログ時計

 デジタル時計が一通り終わったので、グラフィックを使って長針、短針、秒針などを持つ時計を作成する。
 時計の文字盤を別のグラフィックソフトで作成して、針だけをプログラムで動かせば比較的簡単であるが、ここではグラフィックス命令の使い方を見る意味でもすべてプログラムで処理することにする。


グラフィクスについてT

 新規フォームを用意し、プロパティを次のように設定する。

 Caption … アナログ時計、  Height … 4800、  Width … 4800

 フォーム(オブジェクト)の大きさを設定するにはHeightプロパティとWidthプロパティがある。プロパティウィンドウをよく見るとよく似たものにScaleHeightプロパティとScaleWidthプロパティというものがある。このプロパティについて調べてみる。

 4つのプロパティはおおよそ左図のような大きさを表していると考えればよい。しかし、ScaleHeightプロパティとScaleWidthプロパティはヘルプを調べると次のように説明されている。

ScaleHeightプロパティとScaleWidthプロパティ
 「オブジェクト内部の水平および垂直方向の長さに対して定めた単位でそれらの寸法を設定します。」

 定めた単位とはScaleModeプロパティで設定する大きさの単位である。初期状態の単位はtwipである。
 ScaleHeightプロパティとScaleWidthプロパティは水平および垂直方向の長さに対してそれらの寸法を設定するプロパティである。文章ではわかりにくいので、次のサンプルを実行してみる。

・プログラムリスト(Sample)

Option Explicit

Private Sub Form_Click()
    Print Form1.ScaleHeight, Form1.ScaleWidth
    Form1.Line (0, 0)-(500, 500), RGB(255, 0, 0)    '直線を描く
End Sub

Private Sub Form_Load()
    Form1.ScaleHeight = 1000    'ここと次の行の1000を500に変更して実行してみる
    Form1.ScaleWidth = 1000
End Sub

 実行して、フォームをクリックすると左図のように直線とプロパティの値が表示される。直線を描くには、Lineメソッドを使用して、始点と終点の座標を指定する。

 Form_Loadプロシージャの中でScaleHeightプロパティとScaleWidthプロパティをともに1000に設定しているので、直線の終点座標(500,500)はちょうどフォームの中央になる。
 ScaleHeightプロパティとScaleWidthプロパティをともに500に変更すると直線はフォームの左上から右下まで、ちょうど対角線を描くことになる。

 ScaleHeightプロパティとScaleWidthプロパティの大きさを変更してもフォームの大きさは変わらない。フォームの大きさをScaleHeightプロパティとScaleWidthプロパティで設定した長さとして扱うことができるようにするものである。


グラフィクスについてU

 フォームやピクチャコントロールで使えるグラフィックスメソッドの基本的な使い方をまとめておく。objectはフォームまたはピクチャボックスコントロールである。詳しくは各メソッドのヘルプを参照にすること。

Cls object.Cls
 描画したグラフィクスを消去する。
Circle   object.Circle (x,y),r,c
 中心座標(x,y)、半径rの円をc色で描く。
Line object.Line (x1,y1)-(x2,y2),c[,B]
 始点(x1,y1)から終点(x2,y2)まで直線をc色で描く。Bを指定すると直線を対角線とする四角を描く。
PSet object.PSet (x,y),c
 座標(x,y)にc色で点を描く。
Point object.Point (x,y)
 座標(x,y)の色を調べる。


グラフィクスについてV

 実行してクリックで直線を描く。次に、このウィンドウがほかのウィンドウに隠れたあと、再び表示させると描いたはずの直線が消えている(左図参照)。

 この現象の対処方法は、フォームのAutoRedrawプロパティをTrueに設定するだけである。通常はFalseに設定されている。詳しくはヘルプ(AutoRedrawプロパティ)参照のこと




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

 

 

inserted by FC2 system