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