|
既にお分かりだと思いますが、画面拡大は、mm_dotの値を大きくすること、画面縮小は、mm_dotの値を小さくすること、になります。それに応じて、画面左下(X1,Y1)・画面右上(X2,Y2)の値を計算し、画面を描画します。
画面移動は、mm_dotの値はそのままで、画面左下(X1,Y1)・画面右上(X2,Y2)の値を、X方向(水平方向)・Y方向(垂直方向)に値を足したり引いたりして計算をした後、画面を描画します。
画面拡大・縮小・移動を操作するには、いろいろな手法があります。数値入力で行う方法(移動量、倍率、方向、等)、マウスで行う方法(1点指定、2点指定、クリック/ドラッグ、等)、キーを押して行う方法(矢印キー、PageUp/PageDown、ファンクションキー(F1〜F12))、Home、等)。
スクロールバー操作やマウスホイール操作、前倍率指定や、以前に指定した画面状態を何候補か覚えておいて指定出来るようにする、上空表示(基準画面)を別窓で表示しておいてそこでも指定出来る、等々、かなり、いろいろなパターンがあります。
例えば、あるCADで使いやすかったから、こういう手法を使いたい、とか、いや、私はこういう手法でやりたい、等、いろんな想いがあることでしょう。この操作が即、そのCADの操作性に直結する場合も多いので、いろいろ考えてみて下さい。
画面拡大を行う際には、画面の縦横比と、指定する拡大領域の縦横比を、内部計算で同じにすることが重要になります。
画面移動では、X1への加減量とX2への加減量、Y1への加減量とY2への加減量は、必ず、同じになるようにして下さい。
【画面移動を行うサンプルプログラムのソース】
・移動量の数値入力&矢印ボタンを押して移動
ボタンを貼り付けて、ボタンのOnClickイベントで
・移動量の数値入力&矢印キーを押して移動
矢印キーを押したというイベントをフォームで
受け取る為、フォームの KeyPreviewプロパティを
Trueにしておきます。
矢印キーを押した時、OnKeyDownイベントで処理
・スクロールバーでの移動
Min=-100、Max=100、中央は0、にしておき、
用紙の半分のを100で割った量ずつ移動します。
・画面をマウスクリックして移動
マウスでクリックした場所を画面中央にします
【2倍拡大表示・1/2倍縮小表示を行うサンプルプログラム】
・ボタンを押したら画面中央を基準として
2倍拡大表示 及び 1/2倍縮小表示 を行います。
次に、マウスでクリックした位置を中心として、2倍拡大表示、1/2倍縮小表示を行います。この場合、既にマウスクリックは画面移動で行っていたため、まずこれを、ボタンを押してから画面移動を行うようにし、機能モード用変数 Fmode を用意します。
Fmode:0 :何もしない(初期状態)
Fmode:1 :画面移動
Fmode:2 :2倍拡大表示
Fmode:3 :1/2倍縮小表示
という風に割り振る事にします。
【サンプルプログラムのソース】
次に、マウスでの2点指定による画面移動を行ってみましょう。最初のクリック指定では、クリックした座標を記録しておき、次のクリック指定時に移動処理を行います。
Fmode:10 :画面移動・開始点指定
Fmode:11 :画面移動・終了点指定 → 画面移動処理
開始点で指定した場所を、終了点で指定した場所に、画面移動します。
【サンプルプログラムのソース】
上記では、2点指示するのが少し分かりにくいかもしれません。見て分かりやすくするために、ラバーバンド表示をしてみましょう。ラバーバンド表示は既に説明した通り、マウスを動かしている間にXORモードで直線を消して,描いて,を繰り返します。ラバーバンドを表示させるために、ラバーバンドを表示しているかどうかのフラグ、及び、開始点の整数座標も記憶するようにします。
【サンプルプログラムのソース】
実用的なプログラムでは、ラバーバンドのゴミが出ないように作図タイミングを間違えないようにしたり、細かくラバーバンドを消すコードを入れたりしますが、このプログラムはそこまで行っていません。
さてそれでは、2点指示による画面拡大表示、2点指示による画面縮小表示を行ってみます。上記の2点指示画面移動と同じく、ラバーバンドの表示を行いますが、こちらは長方形のラバーバンドを表示します。
2点指定での長方形の比率は、画面比率と異なるため、そのままビューエリアの変数に値を入れる事は出来ません。縦横ごとにmm_dotを計算し、拡大時には小さい方、縮小時には大きい方を採用し、指定長方形の中央を基準にしてmm_dotでのビューエリアを計算し、画面表示を行います。
Fmode:20 :画面拡大・開始点指定
Fmode:21 :画面拡大・終了点指定 → 画面拡大処理
Fmode:30 :画面縮小・開始点指定
Fmode:31 :画面縮小・終了点指定 → 画面縮小処理
【サンプルプログラムのソース】
※上記でFmodeの値が飛び飛びになっているのは、もしかすると後から間に何かを挿入したくなった場合のために、余裕をもたせてあるだけです。これで完璧!という事であれば連続した値でも構いません。
勿論、これらの手法もあります。ドラッグでの移動や、マウスホイールを使った移動など。いろいろ試してみて下さい。
|
|
CAD装置(1)
CAD装置(2)
メディア
AutoCADの
DIESELマクロ
CSV
DXF
PCES
IGES
STEP
数学とCAD
CAD作ろ!
▲PREV
▼NEXT
|