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