エンタープライズ:特集 2003/07/04 17:20:00 更新
C Magazine

C MAGAZINE 2002年8月号より転載
プログラムのレシピ――プログラミングの考え方・作り方 (5/13)

グラフィックエディタの製作(1)
グラフィックエディタとは何か?

 Part2では実際にプログラムを製作しながら、実践的なプログラミングのノウハウを解説します。題材はグラフィックエディタです。

グラフィックエディタの種類

 グラフィックエディタとひと口にいってもいろいろありますが、一般には絵を作ったり編集したりするソフトウェアのことです。まずはグラフィックエディタとはどんなものなのか、そしてこれからどんなものを作るのかを考えましょう。

 大ざっぱに分類すると、グラフィックエディタには次のような種類があります。これら以外にも、デジタルカメラやスキャナからの入力に特化したツールや、マスク(画像の隠蔽)機能だけのツールなど、いろいろなものがあります。

●ペイントツール

 ペンやブラシといった描画機能を使って、絵画調のCGを描くためのツールです。ソフトによっては、油彩や水彩やクレヨンといった実際の画材をリアルにシミュレートするものもあります。また絵の制作を楽にするために、スキャナやタブレットのような入力装置をサポートすることも多いようです。Windowsに付属する「ペイント(ペイントブラシ)」はペイントツールの一例ですね。ペイントツールは主にビットマップやアイコンなどを作成するために使います。

●ドローツール

 多角形やベジエ曲線などの図形を組み合わせて、図を作成するためのツールです。通常、ペイントツールはフリーハンドで絵を描くために使いますが、ドローツールはきっちりとした作図のために使います。ドローツールで作成した図は、ペイントツールのようなピクセル(画素)データではなくベクトル(座標)データなので、拡大縮小や印刷に強いことも特徴です。

 身近なドローツールの例としては「Microsoft PowerPoint」があります。これはプレゼンテーションツールですが、作図機能の部分はまさにドローツールそのものです。

●レタッチツール

 ペイントツールに似ているのですが、CGに対して特殊なエフェクト(効果)を加えることに特化したものがレタッチツールです。デジタルカメラやスキャナなどで入力した画像を加工したり、ほかの画像と合成したりするために使います。画像の明るさや色調を変えられるだけでなく、たとえば写真によけいなものが入ってしまったときにレタッチツールで取り除くこともできます。ペイントツールとレタッチツールの境界はあいまいで、たとえば「Adobe Photoshop」などは両方の機能を兼ね備えた高機能ソフトです。一般には、描画機能が強いものをペイントツール、加工機能がメインのものをレタッチツールに分類するようです。

ペイントツールは作りやすい

 さて、何を作りましょうか? ペイントツールとレタッチツールはどちらもピクセルデータを扱うツールですから、ほぼ同じ方法で作れます。となると、ペイントツール(レタッチツール)かドローツールかのどちらかです。初めて作る方へのお勧めはペイントツールです。ペイントツールには次のようなメリットがあります。

●ピクセルデータを扱うのでわかりやすい

 基本的に、ピクセルデータというものは単にピクセルの色情報が縦横に(配列状に)並んでいるだけのデータです。そのためファイルの読み書きにしても、描画機能にしても、プログラムが作りやすいのです。

●ライブラリのサポートがいい

 Win32 APIをはじめとして、たいていのライブラリにはピクセルデータ(Windowsビットマップデータ)を扱う機能があります。ファイルの読み書き処理や描画処理の一部をライブラリに任せられるので、プログラミングが楽です。

●建て増し式に作りやすい

 ペイントツールの場合、ファイルの読み書きと表示の部分だけ作ってしまえば、あとはだんだん機能を追加していくだけです。そのため、好きな機能から建て増し式に作り込んでいけます。

●オリジナリティを発揮しやすい

 ドローツールはどちらかというと基本機能が充実していることが大事で、あまり奇抜な機能はありません。一方ペイントツールの機能はアイデア勝負といったところがあるので、工夫しだいでおもしろいツールが作りやすいといえます。


 ということで、本稿でもペイントツールを作ることにしましょう。

どんな機能を作るか

 次に、ツールにどんな機能を盛り込むのかをもう少し具体的に考えてみましょう。

●画像データの色数

 まずはツールが扱う画像データの色数を決めましょう。代表的な画像データの色数としては、2色、16色、256色、フルカラー(約1670万色)があります。今回はフルカラーにします。フルカラー画像はいちばん表現力が豊かですし、最近のPCはフルカラー画像を扱うのに十分な性能を持っています。プログラミングする側にとってもフルカラーは楽です。それは、「パレット」を考慮しなくていいからです。フルカラー未満の色数では、フルカラーの中から決まった数の色を選んで使います。この選んだ色のセットがパレットです。パレットにはメリットもありますが、プログラミングするうえではめんどうなことがたくさんあります。

●画像ファイルの形式

 作成した画像データをファイルに保存したり、ファイルから画像データを読み込んだりする機能も必要です。ここではWindowsでもっとも代表的なビットマップ形式を使います。 本当はいろいろな形式の画像データを読み書きできることが望ましいのですが、ビットマップ形式はライブラリのサポートもよく、非常に扱いやすい形式です。ほかの形式の読み書き機能がほしければ、あとから追加もできます。

●描画機能

 描画機能というものは実に多種多様です。単純な図形や文字を描く機能もあれば、現実の画材を模した機能もあります。

 多くの描画機能を一気に作り上げるのはたいへんですが、幸い描画機能は建て増ししやすい機能です。先に基本的なものだけ作って、あとから必要に応じて機能を足していけばいいのです。

 今回は2種類のブラシ(筆)を作ってみることにしました。1つは半透明ブラシです。これはさまざまな形状の筆を使い、濃淡つきで色が塗れる機能です。もう1つはクローンブラシで、これは画面の一部をコピーするちょっとおもしろいブラシです。

●色の選択機能

 一般にペイントツールでは、頻繁にブラシの色を変えながら絵を描きます。そのため使いやすいツールにするには、すばやく色を変えられるようなユーザインタフェイスを作らなければなりません。

 ここでは2種類の色選択機能を作ることにしましょう。1つは色のグラデーションから目的の色を選択するカラーパレットです。もう1つはスポイト機能で、これは画面上をマウスでクリックしてその位置にある色を「拾う」ものです。

●拡大縮小機能

 画像の細かいところを編集するには、拡大表示機能が必要です。逆に大きな画像を小さな画面で見るには縮小機能が便利です。拡大縮小機能の実現は、描画機能との両立がカギです。拡大縮小中にも描画や編集の操作ができるように作っておくと、使い勝手がよさそうですね。

●編集機能

 Windowsアプリケーションの多くは、クリップボードを利用した編集機能を備えています。おなじみの「切り取り」「コピー」「貼り付け」ですね。これらの機能はペイントツールでも便利です。ほかのアプリケーションとの間のデータ交換にも使えますので、ぜひ実現することにしましょう。

●画像フィルタとプラグイン機能

 描画機能と並んで大事なのが画像フィルタ機能です。代表的な例としては、画像をモノクロ化したり、色調を変えたり、ソフトフォーカスをかけたり、輪郭を抽出したりといった画像フィルタがあります。

 画像フィルタは描画機能と同様に、建て増し式に作れる機能です。今回は拡張性を重視して、プラグイン方式にしましょう。これはツール本体とは別に、あとから画像フィルタのモジュールを作成して、実行時にツール本体に結合できる機能です。本格的なグラフィックエディタはプラグイン機能を持っていることが多いですね。

前のページ | 1 2 3 4 5 6 7 8 9 10 11 12 13 | 次のページ

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

Copyright © ITmedia, Inc. All Rights Reserved.