概要

プロシージャの引数の並びは、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 gDashStyle  ' 破線の種類
Public gLineColor  ' 線の色
Public gAreaColor  ' 塗りつぶしの色
Public gTextColor  ' 現在の文字の色

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

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 SetDashStyle(ds)       ' 破線の種類の指定
Sub SetLineWidth(lw)       ' 線の太さの指定
Sub gClear()      ' すべてのオブジェクトを消去します
Sub gcls()      ' コントロール以外のすべてのオブジェクトを消去します

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

InitializeGraphics

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

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

SetViewPort(ViewLeft, ViewTop, ViewRight, ViewBottom)

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

SetViewPort(x1, y1, x2, y2)により、描画範囲をワークシートのスクリーン座標(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ケの座標の間を結ぶ直線を連続して描きます。 線の色はカレントカラーを使用します。

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)に点を打ちます。色を指定しない場合はカレントカラーを使用します。

DrawText(x, y, St, Optional txtcRGB)

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

SetLineColor(lc)

線の色を指定します。

SetLineStyle(ls)

線の種類を指定します。

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

SetDashStyle(ds)

破線の種類を指定します。

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

SetLineWidth(lw)

線の太さを指定します。

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

gClear

すべてのオブジェクトを消去します。

gcls()

コントロール以外のオブジェクトを消去します。

使用上の注意点

ExcelはUndo機能を備えているため、きわめて大量のグラフィック・オブジェクトを描くと、動作が遅くなったりハングアップしたりする可能性があります。