開発じたばた日誌

前へ●●●次へ
じたばた日誌目次へ戻る
TSUCHY Softへ戻る


Styx ビットマップ時計編

 私は周知のごとくNIFTYのFGALTLAに常駐していますが、そこの6番会議室にマウスツールの部屋があります。 ここではしばしば「うさうさシリーズ」でユーザーが作った絵をうさうさが表示することで話題が盛り上がっています。

 これはとってもうらやましいことですね。私もこんなことできないものだろうか? こんな動機でビットマップ時計を思いつきました。

 ユーザーが時計の文字盤を作って、自由に時計の模様を変更できる。 いいですねぇ、これ。ちまたのオンラインソフトには、ディジタル時計が主流でアナログはあまりありません。 さらに文字盤を自由に選択できるなんてみたことないです。これは希少価値だ。

 VBでは簡単だったのですが、これがはまりの元になりました。 実はAPIでLoadImageなる便利なものがあるのですが、この当時は知りませんでした。 どのみちパレット問題を解決するにはLoadImageだけではだめなのです。

 ビットマップを表示するために、私はBMPファイルの内部構造を知ることから始めました。 幸いヘルプには詳しく書かれてあり、バイナリダンプした値とヘルプの内容を見比べて、 フムフム確かにそうなっている、と納得することから始まりました。

 さてビデオモードには256色とかフルカラーとかありますね。 これはパレットというものと関係が深く、またBMPファイルとも関係があります。

 まず色の道を極めなくてはいけません。 色は内部ではどんなふうに表現されているのでしょうか?そうですRGBですね。 知らない人はないと思いますがRGBとはRed、Green、Blueです。 色はこの光の三原色の強さで表現します。強さはそれぞれ0から255までの256段階です。 たとえば黒はR=0,G=0,B=0、白はR=255,G=255,B=255です。 するとコンピュータの内部で表現できる色の組み合わせは256x256x256=16777216通りあります。 これがフルカラーということです。

 フルカラーでは1ドットの色を表現するためにRGBの3バイトを使用します。 これで1024x768の画面を表示するには1024x768x3=2,359,296=2.3Mバイトのメモリーが必要です。 貧弱なビデオボードにこんなにメモリーを載せるのはムリムリですね。

 そのためにパレットなるものがあります。パレットは貧弱なビデオボードしかなかったころの負の遺産です。 256色モードはパレットを使っています。 パレットには1番目の色、2番目の色...256番目の色を指定する場所があります。 その場所には16777216通りの色のどんな色でも指定できます。 どんな色でも指定できますが、パレットには色を置く場所が256個しかありません。 そして画面上のドットの色の指定方法はRGBではなくて、パレットの**番目の色 という具合に指定するのです。

 だから256色モードでは、どんな色でも表示できるけど(パレットにはどんな色でも指定できる)、 同時には256通りの色しか表示できない(パレットは256個の色しかもてない)のです。