概要

プロシージャの引数の並びは、NEC PC-9801のN88-BASICに準拠した形式とし、ワールド座標でのグラフィックス描画命令を標準モジュール内のプロシージャとして定義しライブラリ化しました。

座標や主要なパラメータ変数は宣言部で定義し、大域変数としてプロシージャ間で値の引渡しを行っています。

ラインスタイルや色の指定などに関するVisual Basicの定数については、VBAのヘルプを参照してください。

ワールド座標によるグラフィックスのための大域変数

Public gWindowXOrigin As Double, gWindowYOrigin As Double  ' ワールド座標上の原点
Public gFactorX As Double, gFactorY As Double  ' スクリーン座標との換算比率
Public gCurrentX As Double, gCurrentY As Double  ' ワールド座標上の現在位置
Public gScreenXLeft As Single, gScreenYTop As Single  ' Viewportの左上座標
Public gScreenXRight As Single, gScreenYBottom As Single  ' Viewportの右下座標
Public gScreenX As Single, gScreenY As Single  ' スクリーン上の現在位置
Public gLineWidth  ' 線の幅
Public gLineStyle  ' 線の種類
Public gLineColor  ' 線の色
Public gAreaColor  ' 塗りつぶしの色

ワールド座標によるグラフィックス描画プロシージャ一覧

Sub InitializeGraphics()       ' グラフィックス利用の開始宣言
Sub SetViewPort(ViewLeft, ViewTop, ViewRight, ViewBottom)       ' ビューポートの指定
Sub SetGraphicsWindow(WindowLeft, WindowTop, WindowRight, WindowBottom)       ' 描画ウィンドウのサイズの指定
Sub Move(x, y)       ' 移動
Sub DrawLineTo(x2, y2, Optional cLineRGB)       ' 現在位置から直線を描く
Sub DrawLine(x1, y1, x2, y2, Optional cLineRGB)       ' 直線を描く
Sub DrawPolyLine(x, y, n)       ' 直線を連続して描く
Sub DrawRectangle(x1, y1, x2, y2, Optional cLineRGB)       ' 矩形を描く
Sub DrawRectangleFill(x1, y1, x2, y2, Optional cLineRGB, Optional cAreaRGB)       ' 塗りつぶした矩形を描く
Sub DrawOval(x, y, rx, Optional ry, Optional cLineRGB)       ' 楕円を描く
Sub DrawOvalFill(x, y, rx, Optional ry, Optional cLineRGB, Optional cAreaRGB)       ' 塗りつぶした楕円を描く
Sub PointSet(x, y, Optional cLineRGB)       ' 点を打つ 
Sub DrawText(x, y, St, Optional txtcRGB)       ' 文字を表示する
Sub SetLineColor(lc)       ' 線の色の指定
Sub SetLineStyle(ls)       ' 線種の指定
Sub SetLineWidth(lw)       ' 線の太さの指定
Sub gClear(Optional bc)      ' Viewport内を背景色で塗りつぶす
Sub gcls(x1, y1, x2, y2, Optional bgColor)      ' 指定した領域内を背景色で塗りつぶす

グラフィックスス・プロシージャの機能

InitializeGraphics

ワールド座標グラフィックス描画機能を利用するための初期設定を行います。

  • SetViewPort(0, 0, 639, 479)により、描画範囲を(0, 0) - (639, 479)とします。
  • SetGraphicsWindow(0, 0, 639, 479)により、ワールド座標はスクリーン座標(Formの物理座標)と同じで、 左上が原点 (0, 0) になります。
  • 線種を黒の細実線にします。

SetViewPort(ViewLeft, ViewTop, ViewRight, ViewBottom)

ビューポート(描画可能範囲)を設定します。

SetViewPort(x1, y1, x2, y2)により、描画範囲をFormのスクリーン座標(x1, y1) - (x2, y2)の矩形内とします。

SetGraphicsWindow(WindowLeft, WindowTop, WindowRight, WindowBottom)

ビューポート(描画可能範囲)の左上と右下の点に対応するワールド座標系の座標を指定します。

初期状態では、SetViewPort(0, 0, 639, 479); SetGraphicsWindow(0, 0, 639, 479)となっているので、 座標系はスクリーン座標(ワークシートの物理座標)のままになります。

右上が正の通常の座標系を指定するには、左下の座標の値が小さく(負に)なるように指定します。

例 SetGraphicsWindow(-4, 3, 4, -3)

Move(x, y)

ワールド座標系で、現在の座標を(x, y)に移動します。

DrawLineTo(x2, y2, Optional cLineRGB)

ワールド座標系で、現在位置と座標(x2, y2)の間に直線を描きます。線の色を指定しない場合はカレントカラーを使用します。

DrawLine(x1, y1, x2, y2, Optional cLineRGB)

ワールド座標系で、座標(x1, y1)と(x2, y2)の間に直線を描きます。線の色を指定しない場合はカレントカラーを使用します。

DrawPolyLine(x, y, n)

ワールド座標系で、配列 x, y で指定されたnケの座標の間を結ぶ直線を連続して描きます。 線の色はカレントカラーを使用します。

点の数の上限は 10,001 としています。それ以上の数の点を使用する場合は配列の宣言を変更してください。

DrawRectangle(x1, y1, x2, y2, Optional cLineRGB)

ワールド座標系で、座標(x1, y1)と(x2, y2)を対角の頂点とする長方形を描きます。線の色を指定しない場合はカレントカラーを使用します。

 参照 色を変えて箱を描く

DrawRectangleFill(x1, y1, x2, y2, Optional cLineRGB, Optional cAreaRGB)

ワールド座標系で、座標(x1, y1)と(x2, y2)を対角の頂点とする長方形を描き、内部を塗りつぶします。線の色を指定しない場合はカレントカラーを使用します。
塗りつぶしの色を指定しない場合は線の色と同じ色で塗りつぶします。

 参照 色を変えて箱を描く

DrawOval(x, y, rx, Optional ry, Optional cLineRGB)

ワールド座標系で、座標(x, y)を中心とし、水平方向の半径rx, 垂直方向の半径ryの楕円を描きます。ryを省略した場合は正円になります。 線の色を指定しない場合はカレントカラーを使用します。

 参照 楕円を描く

DrawOvalFill(x, y, rx, Optional ry, Optional cLineRGB, Optional cAreaRGB)

ワールド座標系で、座標(x, y)を中心とし、水平方向の半径rx, 垂直方向の半径ryの楕円を描き、内部を塗りつぶします。ryを省略した場合は正円になります。
線の色を指定しない場合はカレントカラーを使用します。塗りつぶしの色を指定しない場合は線の色と同じ色で塗りつぶします。

 参照 色を変えて円を描く

PointSet(x, y, Optional cLineRGB)

ワールド座標系で、座標(x, y)に点を打ちます。色を指定しない場合はカレントカラーを使用します。

VBAには点を描く機能が無いため、大きさ1の円を描くことで代用しています。

DrawText(x, y, St, Optional txtcRGB)

ワールド座標系で、座標(x, y)から文字列Stを表示します。色を指定しない場合はTextのカレントカラーを使用します。

SetLineColor(lc)

線の色を指定します。

SetLineStyle(ls)

線の種類を指定します。線の幅が1以下の場合のみ有効です。

 参照 線の太さと種類を変える

SetLineWidth(lw)

線の太さを指定します。

 参照 線の太さと種類を変える

gClear(Optional bc)

Viewport内を指定した色で塗りつぶします。色を指定しない場合は、Formのデフォルトの背景色 RGB(240,240,240) を使用します。

gcls(x1, y1, x2, y2, Optional bgColor)

指定した領域内を指定した色で塗りつぶします。色を指定しない場合は、Formのデフォルトの背景色 RGB(240,240,240) を使用します。

使用上の注意点

グラフィックス・ライブラリの最初の命令 InitializeGraphics をCALLする前に、出力するデバイスコンテキストを取得し、Public変数 myhdcに代入してください。

    monhdc = GetForegroundWindow()
    myhdc = GetDC(monhdc)