エンタープライズ:特集 2003/09/22 21:29:00 更新
C Magazine

[C Magazine連載]プログラムのレシピ(第2回)
ドローツールを作る (1/6)

本連載では、さまざまなツール系アプリケーションの作り方を解説します。言語を学んだあと、いよいよアプリケーションを作ってみようという方には、とくに参考になると思います。今回は「ドローツール」を作ります。ドローツールは、矩形や楕円といった図形を組み合わせて図を作成するツールです。制作上の主なポイントは、図形管理用クラスの設計と、図形選択時の当たり判定です。
C MAGAZINE 2002年10月号より転載

ドローツールとは
 ドローツールは、Fig.1のように、矩形や楕円、ポリゴン(多角形)やテキスト(文字列)といった基本図形を組み合わせて、さまざまな図を描くことができるツールです。ペイントツールはフリーハンドで絵を描くために使いますが、ドローツールはきっちりとした作図のためのツールです。絵をピクセル(画素)で扱うペイントツールとは違い、図をベクトル(座標)で扱うので、拡大縮小や印刷に強いことも特徴です。

Fig.1
Fig.1 今回作成したドローツール

 身近なドローツールの例としては、Windowsなら「Microsoft PowerPoint」や「Adobe Illustrator」、UNIXなら「tgif」などがあります。フォントを作るためのツールなども一種のドローツールです。プログラミング関連では、UML(Unified Modeling Language)のダイアグラムを描くツールもドローツールの仲間ですね。

 ところで「Microsoft PowerPoint」は、作図機能の部分がドローツールで、全体としてはプレゼンテーションツールです。プレゼンテーションツールのほとんどは、ドローツールの機能を内蔵しています。今回作成するドローツールも、次回はプレゼンテーションツールに発展させる予定です。

制作上のポイント
最初に、ドローツールを制作するうえでのポイントを考えてみましょう。

●図形管理用クラスの設計
 まず考えるべきなのは、図形を管理するためのクラスです。図形の頂点座標、色やフォント、文字列といった情報を保存したり描画したりする機能を、クラスにまとめます。

 ドローツールで扱う図形情報は、クラス(オブジェクト指向的なデータ構造)との相性がいいデータです。図形には矩形、楕円、ポリゴン、テキストなどの種類があって、それぞれまったく形状が違いますが、共通部分も多くあります。たとえば、図形を囲む四隅の座標や描画色といった情報は、どの図形にも必要なものです。こういった共通部分を、クラスの継承関係を使ってうまく表現してやることが、ドローツール作りの基本です。

●図形選択時の当たり判定
 ドローツールには、図形を移動したり、サイズを変更したりといった機能が必要です。また、複数の図形をまとめる(グループ化する)ときにも、まず図形を選択する必要があります。

 図形を選択するには、図形をクリックするのが一般的です。では画面をクリックしたときに、クリックしたのがどの図形なのかをどう判定したらいいのでしょうか。

 たとえば、矩形ならば簡単です。クリックした座標が矩形の四隅の内側に入っているかどうかを調べればいいのです。では、楕円やポリゴンはどうでしょうか。これらは、四隅だけで内側か外側かを単純に判定できません。このように複雑な形状の内外を判定するには工夫が必要です。

●そのほかのポイント
 ツールの基本機能としては、ファイルの入出力や編集操作(切り取り、コピー、ペースト)などもサポートしたいところです。これらの機能は、図形管理用クラスに盛り込みます。付加的なものとして、図形を一定間隔で整列させる機能(グリッド機能)や、印刷機能などもあると便利です。これらは基本機能を作ってから、必要に応じて足していけばいいでしょう。

図形のクラス設計
 それでは、制作にとりかかりましょう。今回は、図形管理用クラスの設計と、図形選択時の当たり判定について解説します。まずは図形管理用クラスの設計です。アプリケーションを作るときには、画面表示やユーザインタフェイスから始めてもいいのですが、ドローツールの場合は最初に図形のクラスを設計するのがお勧めです。ドローツールが扱う図形はさまざまですが、今回は次の4つの基本図形をサポートすることにしましょう。

・矩形
・楕円
・ポリゴン(多角形)
・テキスト(文字列)

 後ほど、これらの図形をまとめてグループにする機能(グループ化機能)をつけます。グループ化機能があれば、基本図形を組み合わせて複雑な形状を作ることもできます。

 実際のドローツールの画面では、これらの図形はFig.2のように表示されます。ポリゴンについては、図形を閉じるかどうかを指定できるようにすれば、線を描くのにも使えます。

Fig.2 基本図形
Fig.2 基本図形

[C Magazine連載]プログラムのレシピ(第2回)
ドローツールとは
制作上のポイント
図形のクラス設計
図形の基本クラス
矩形クラスと楕円クラス
ポリゴンクラス
テキストクラス
グループ化機能
図形の当たり判定
サンプルプログラムの使い方
おわりに
・実行ファイル/リソース一式(.lzh形式/1.31MB)
・リスト(.lzh形式/3.40KB)

関連リンク
▼C MAGAZINE
▼ひぐぺん工房
▼「デスクトップマスコットを作ろう」紹介ページ
▼「デスクトップマスコットを作ろう」著者ページ

      | 1 2 3 4 5 6 | 次のページ

[松浦健一郎(ひぐぺん工房),JAVA Developer]