チュートリアル > ビットマップ ペイント ツールの開発 - 基本ユーティリティ |
高機能バージョンのすべてのオリジナル コードは 1 時間足らずで開発されたもので、あらゆる種類のアプリケーションのプロトタイプ作成に関する、MAXScript の柔軟性を示すものです。
全体の流れ: |
ロールアウトからダイアログ ボックスを作成する、簡単な MacroScript を開発します。 |
ロールアウトには、ビットマップの UI コントロールだけを含めます。 |
ペイントは、マウスの左ボタンを押してビットマップ内でマウスをドラッグすることによって行います。 |
ブラシは単一の黒のドットです。 マウスを速く動かすと、点線状のストロークになります。 |
MicroPaint という macroScript を定義します。
前のセッションからのダイアログ ボックスを閉じることができるように、ダイアログ ボックスとして使用するロールアウトの変数をグローバル変数として定義します。
前のセッションからのダイアログ ボックスがあれば、そのダイアログ ボックスを閉じます。ダイアログ ボックスがない場合は、try()catch() のエラー トラップでエラー メッセージを回避します。
このローカル変数は、描画を有効にするためのフラグとして使用されます。変数が false の場合、mousemove イベント ハンドラは描画を行いません。マウスの左ボタンを押すと、この変数は true に設定され、ボタンを離すまで描画が行われます。
これらのローカル変数には、ペイントするビットマップのサイズが入ります。値を変更するだけでツールのサイズも変更され、異なるキャンバス サイズ上にペイントできます。
この変数には描画するキャンバスが入ります。400 x 400 ピクセルの白いビットマップに初期化されます。
ビットマップのキャンバスのあるダイアログ ボックスを定義するロールアウトです。
ビットマップのユーザ インタフェース コントロールです。ロールアウトの左上隅に位置を合わせ、400 x 400のビットマップのキャンバスを表示します。
この関数は、ビットマップ上に点を描画するために呼び出されます。pos 引数には、新しく点を置く位置を示す 2D 座標が入ります。
は、1 つ以上のピクセルを続けてカラー変更するために使用します。pos は、ペイントを開始するビットマップ内の位置 (左上隅は 0,0) を定義します。変更するカラーは配列で指定します。この場合、配列には黒という要素が 1 つだけ入っています。
ビットマップに黒の点を描画した後、それをユーザ インタフェース コントロールに割り当て、描画を更新します。
このダイアログ ボックスのイベント ハンドラは、マウスがロールアウト上にあるときにマウスの左ボタンを押すと呼び出されます。pos 引数には、ロールアウトの座標における 2D の位置が入ります。
フラグをオンにし、mousemove ハンドラ (下記参照) に描画を開始できることを知らせます。
また、paintBrush 関数を呼び出し、現在クリックされている地点を渡します。こうして、マウスを動かさずにクリックしただけの場合には、ビットマップ上に黒の点が描画されます。
このダイアログ ボックスのイベント ハンドラは、マウスの左ボタンを離すと呼び出されます。描画を停止するには、フラグを再びオフにします。
このダイアログ ボックスのイベント ハンドラは、マウス ボタンの状態とは関係なく、マウスがロールアウト上を移動すると呼び出されます。pos 引数にはロールアウト内の 2D の位置を示すピクセル数が入ります。これは、ビットマップ内の位置をピクセル数で示したものと同じになります (どちらも原点[0,0]が同じであるため)。
ここで isDrawing 変数を調べ、マウスの左ボタンが押され、まだ離されていないかどうかを確認します。変数に true が入っている場合、ダイアログ ボックス内のマウスの現在位置で描画の paintBrush 関数を呼び出します。