路線
線は、ラスターディスプレイ上の強調表示されたピクセルのセット (または印刷されたページ上のドットのセット) で、開始点と終了点の 2 つのポイントで識別されます。 開始点にあるピクセルは常に行に含まれ、終点にあるピクセルは常に除外されます。 (この種の行は、包括排他的と呼ばれることもあります)。
アプリケーションが線描画関数、グラフィックス デバイス インターフェイス (GDI)、または場合によってはデバイス ドライバーのいずれかを呼び出すと、強調表示するピクセルが決まります。 GDI は、アプリケーションからのグラフィックス関数呼び出しを処理し、それらの呼び出しをデバイス ドライバーに渡すダイナミック リンク ライブラリ (DLL) です。 デバイス ドライバーは、GDI から入力を受け取り、入力をデバイス コマンドに変換し、それらのコマンドを適切なデバイスに渡す DLL です。 GDI は、デジタル差分アナライザー (DDA) を使用して、線を定義するピクセルのセットを決定します。 DDA は、線上の各ポイントを調べて、ポイントに対応する表示サーフェイス (または印刷されたページ上のドット) 上のピクセルを識別することによって、ピクセルのセットを決定します。 次の図は、線、開始点、終了点、および単純な DDA を使用して強調表示されたピクセルを示しています。
最も簡単で最も一般的な DDA は、ブレゼナム (増分) DDA です。 このアルゴリズムの変更されたバージョンでは、Windows で線が描画されます。 増分 DDA はわかりやすくするために示されていますが、不正確さについても説明されています。 最も近い整数値に切り捨てられたため、アプリケーションによって要求された元の行を表すのに失敗することがあります。 GDI で使用される DDA は、最も近い整数に丸め込まれません。 その結果、この新しい DDA は、アプリケーションによって要求された元の行に近い場合がある出力を生成します。
Note
アプリケーションで新しい DDA では実現できない行出力が必要な場合は、LineDDA 関数を呼び出してプライベート DDA (LineDDAProc) を指定することで、独自の行を描画できます。 ただし、 LineDDA 関数は、線描画関数よりもはるかに低速な線を描画します。 速度が主な懸念事項である場合は、アプリケーション内でこの関数を使用しないでください。
アプリケーションでは、新しい DDA を使用して、1 本の線と複数の接続された線分を描画できます。 アプリケーションは、 LineTo 関数を呼び出すことで 1 行を描画できます。 この関数は、現在の位置から、指定した終了点までの行を描画しますが、含まれません。 アプリケーションは、 ポリライン 関数を呼び出して、各線分の終了点を指定する点の配列を指定することで、一連の接続された線分を描画できます。 アプリケーションは、 PolyPolyline 関数を呼び出して必要な終了点を指定することで、複数の非結合の一連の接続された線分を描画できます。
次の図は、 LineTo、 Polyline、 PolyPolyline 関数を呼び出して作成された行出力を示しています。