|
前回のプログラムでは、点が1ドットなので少し見難いですね。それでは点の大きさを変えたい場合を考えてみましょう。点の形状が「●」の場合には、指定した点を中心とする円を描きます。また、「■」の場合には、指定した点を中心とする正方形を描きます。点の形状は、他に、塗り潰さない○や□、▲、◆、+、×、/、\、*、等々、いろいろあるでしょう。自分で欲しい形状を考えてプログラミングしてみて下さい。
点の大きさは、ペン幅の数値を直径と考えて利用します。また、点の作図は「MarkDraw」という独自の手続きを作って、それに引数X,Yを渡して点を作図しています。
独自の手続きや関数を作成した場合には、それを宣言することによっていろいろ利用出来るようになります。今回もTForm1のprivate内で宣言を行うようにしています。
それでは、その場合の【ソース・プログラム】
前回のプログラムでは、マウスを速く動かすと、点と点の間が開いてしまって綺麗な線として見えません。ではどうするのか?
点と点が開いてしまうのならば、その点と点を繋げば良い訳です。そのためには、【前回指定したマウスの座標】を覚えておいて、さぁ、これから点を描こう、という代わりに、前回の点から今回の点までの直線を描けば良い訳です。
点(x1,y1)作図 → 点(x2,y2)作図 → 点(x3,y3)作図 ・・ |
↓
線分(x1,y1)〜(x2,y2)作図 → 線分(x2,y2)〜(x3,y3)作図 ・・ |
それでは、その場合の【ソース・プログラム】
※なお、単に絵を描くだけであれば、わざわざToMoveをする必要もなければ前回の座標を覚えておく必要もないでしょう。しかし"CAD"を作る事を意識していますので、敢えてこのように考えて欲しく思っています。
勿論、MoveTo&LineToで描くのではなく、ポリラインで描く事も可能でしょう。しかしこの場合、ポリラインの引数が座標点の配列であるため、1ストロークの分の点の座標全てを座標点の配列に記憶させてポリライン作図実行、というタイミングになるでしょう。この場合、マウスドラッグで操作中は画面に表示されない、或いは仮表示をさせておいて、ポリラインを作図する前に消す、という感じでしょうか。
また、同様に、ベジェ曲線を利用する事も可能かもしれません。ベジェ曲線の引数は、ポリラインと若干異なりますが少し注意するだけで対応も可能でしょう。
いろいろ出来るようになれば、考えるだけでも結構楽しくなってくると思います。
|
|
CAD装置(1)
CAD装置(2)
メディア
AutoCADの
DIESELマクロ
CSV
DXF
PCES
IGES
STEP
数学とCAD
CAD作ろ!
▲PREV
▼NEXT
|