ドローとペイント

GrWin グラフィクス・サーバー(以下、サーバー)は内部的にドロー機能とペイント機能の両者を備えていて、デフォルトの起動状態ではどちらも On になっています。

GrWin におけるドーロー機能では、座標のベクトル情報等の描画に関するものに加えて、タイミングや操作に関する情報もオブジェクトとして時系列的に保存されますので、例えば、複雑な実時間アニメーションなどを何度も再生するといったことが可能です。

GrWin におけるペイント機能では、クライアントからの描画命令は、メモリー内に用意されたディスプレーと同じ解像度のビットマップへの描画としてして実行され、必要に応じてディスプレーへ転送されます。

ドロー機能とペイント機能の状態はサーバーのメニューバーの[ビュー(V)]からそれぞれ、[保存モード(T)]と[バッファリング(B)]により確認と変更ができます。また、ユーザーのプログラム(クライアントと呼びます)からも確認と変更ができます。

クライアントが GrWin のルーチンを呼び出すと、その引数情報がサーバーに送信され、サーバー側は描画やその他の対応するアクションを行った後に、ドロー機能[保存モード(T)]が有効な場合は必要に応じてその情報をメモリー内にオブジェクトとして保存します。保存されたオブジェクトは、ウィンドウサイズや[表示モード(M)]の変更等に伴う再描画、あるいは各種の形式でのファイル保存や高精細印刷の際に使われます。また、保存されているオブジェクトを一部削除した後に再描画を行うと、複雑に重なり合った図形の一部を削除することもできます(demo/tstmlvp 参照)。

アニメーション等で膨大な数のオブジェクトを描画する場合や、サイズ固定のウィンドウに表示するだけといった場合にはメモリーを節約する意味で[保存モード(T)]は Off にした方が良いでしょう。なおアニメーションの場合でも、使い終わったオブジェクトを削除しながら保存オブジェクトを適切にコントロールすれば、[保存モード(T)]が On であっても問題は生じません。demo/gwdemo17 はそのようなプログラミングの例ですので必要な方は参考にされるとよいでしょう。

[保存モード(T)]が Off であっても[バッファリング(B)]が On であれば通常のペイント系描画ソフトとして機能しますし、ダブルバッファリング機能を使って滑らかに動くアニメーションも可能ですが、ウィンドウサイズや[表示モード(M)]の変更はできません。この組み合わせで印刷を行うと、ディスプレーと同じ粗い DPI (Dots Per Inch)で出力されます。

[保存モード(T)]と[バッファリング(B)]が共に Off の場合でもクライアントからの要求で描画等はなされますが、ウィンドウが重なって下側になった場合、ウィンドウの重なりを入れ替えても再描画が行われません。つまり一旦画面から消えてしまった図形は元に戻りません。またこの場合、印刷やファイル保存もできませんし、ウィンドウサイズを変えようとするとウィンドウ内は消去されてしまいます。

以上の理由から[バッファリング(B)]を Off にする理由は見当たりませんが、仮に[バッファリング(B)]が Off でも[保存モード(T)]が On であるならば GrWin のすべての機能を使うことができます。ただし、様々な原因で再描画が必要になった際、保存されているオブジェクト数が膨大な場合には長い時間を要してしまいます。

まとめますと、[バッファリング(B)]は常に On のまま、必要に応じて[保存モード(T)]を Off にするか、適切にオブジェクト数をコントロールすることによって、必要とする結果が得られることでしょう。

なお、画面の分解能以上に細かい描画はほとんど意味がありませんので、保存オブジェクト数が大きくなりすぎる場合はその点を考慮してプログラムのパラメータを調整する必要があります。メモリーに保存されているオブジェクト数は、[ステータスバー(R)]が On の場合に、フレーム・ウィンドウ下部のステータスバーの一番右側の数値として表示されます。

カテゴリー: GrWin パーマリンク