PenとかBrushとかDCとかGraphicsとかGCとか

大昔、N-BASICとかで、描画色を指定するときには、COLOR文で指定すると以後の描画は全部その色になってたと思いますが。

この方法なら、LINE文でいちいち色を指定する必要がないわけで、これはこれでひとつの方法だと思います。……が、

こういう、「モーダル」な色指定をしてしまうと、どこかで描画色に「赤」を指定すると、それがずっと影響を与えることになる。これはグローバル変数と同じ問題を持つわけで、プログラムの局所性という側面から好ましくない。

では、たとえばPenというオブジェクトを用意して、draw_line()関数の引数に毎回Penを要求すればよいのかというと、確かにこうすれば、プログラムの他の場所にへんてこな状態を引き継ぐ心配はなくなるわけですが、その代わりに、draw_line()関数に引数がひとつ増え、Penをあっちこっちに引数として引き回さなければならなくなる、かもしれない。

C#(ていうか.NET Framework)のGraphicsでは後者の方法を採用しています。JavaのGraphicsやX Window SystemのGraphic Context, Windowsの素のGDI等は、N-BASIC方式と.NET Framework方式の中間といえるでしょう(GDIにはPenがありますが、SelectObject()とかいう怪しい関数でDCに紐付けられて、あとはモーダルなので)。

こういう問題は正解がなくて、「どこらへんが使いやすいか」という落としどころを見つける作業になるだけに迷います。

何を言っているかというとDiksamの描画関数の仕様で迷っているわけですが。

.NET Framework流が汎用性の面からすればベストなんですかねえ。