Tech Note 04c: Tutorial: 透明背景のアイコンとビットマップの作り方March 30, 2004© NSB Corporation. All rights reserved. |
[英語版]
Contributed by Onik Arian
本稿では透明背景を持つアイコンとビットマップ作成、およびそれらをNSBasicプロジェクトで使うための詳細を説明いたします。既にPOSEおよびPalm OS 3.5以降のデバイスをお持ちであると仮定します。PRCファイル内で透明ビットマップを使うには、4つのステップが必要です。以下に概略を説明します。
ここではデモンストレーションの目的で、透明背景イメージの3つのファミリーを作成しインストールします。
お好きなイメージ編集ツールを使って、イメージをBMPファイルとして保存します。編集にあたり、いくつかの重要なことがあります:
では、6つのビットマップ(3ファミリー)を作り、8-bitのBMPファイルとして、NS BasicのBitmapsフォルダーに保存してください:
SmallIcon15x9.bmp & SmallIcon30x18.bmp A family of 8-bit LoRes and HiRes Small Icons LargeIcon22x22.bmp & LargeIcon44x44.bmp A family of 8-bit LoRes and HiRes Large Icons Bitmap30x30.bmp & Bitmap60x60.bmp A family of 8-bit LoRes and HiRes Bitmaps
次に、NS Basicプロジェクトを作り、6つのビットマップをリソースとして加え、PRCファイルへとコンパイルします。この時点では全てのBMPファイルは不透明な背景を持っています。後ほど必要ですので、BitmapファミリーのID番号を記録しておいてください。LargeIconとSmallIconのファミリーのID番号は気にしなくて結構です。
NS Basicを起動し、新規プロジェクトを作成します。nameをProject1からTransBitに変え、Creator IDにTraBをセットします。フォームのタイトルをForm1からTransparent Demoに変えます。フォームの中央にBitmapオブジェクトを配置し、プロジェクトをTransBit.prjと名前を付けて保存してください。
SmallIcon15x9.bmp LargeIcon22x22.bmp Bitmap30x30.bmp
プロジェクトエクスプローラを見ると、以下の様になっているはずです:
プロジェクトにはLoResビットマップをリソースとして加えました。HiResバージョンはこれから処理します。また、Bitmap30x30のID番号に注意を払ってください。1007です。これは後ほど必要になります。では、プロジェクト保存してください。
NS BasicはPath, 1-bitを2つのビットマップの内の1つにセットしています。このパスは消してください。次に1006/Bitmap 1006をクリックし、Path, 8-bitにLargeIcon22x22.bmpを、 Path, HiRes 8-bitにLargeIcon44x44.bmpをセットします。 同様にPath, 1-bitの内容を削除します。 1007/Bitmap 1007をクリックし、Path, 8-bitにBitmap30x30.bmpを、Path, HiRes 8-bitにBitmap60x60.bmpをセットします。同じくPath, 1-bitを削除します。プロジェクトを保存してください。 ビットマップの3つのファミリーの設定ができましたので、NS Basicにそれらを使って何をするか指示します。
NS BasicにBitmap 1006ファミリー(LargeIcon22x22.bmp & LargeIcon22x22.bmp)を大アイコンに使うよう指示し、Bitmap 1005ファミリー(SmallIcon15x9.bmp & SmallIcon30x18.bmp)を小アイコンに使うように指示しました。 次にフォーム上のBitmapオブジェクトをクリックします。プロパティ画面内で、Bitmap IDに1007をセットします。これでプログラムが実行されると、Bitmap 1007ファミリーのメンバーが表示されます。 プロジェクトを保存してください。さて、PRCファイルへコンパイルし、テストしてみましょう。
Pilot Resource Compiler (PilRC) はリソーススクリプトファイルを使って、1つまたは複数のバイナリーリソースファイルを生成します。バイナリーリソースファイルはPalm Computing Platform用に開発する時に使えます。例えば、PilRCはBMPファイルのグループをPRCデータベースへコンパイルできます。また、BMPファイルをバイナリーファイル(*.BIN)へもコンパイルできます。これらはNS Basicプロジェクトで使っている元のBMPファイルと入れ替えることができます。PilRCはコマンドライン・ユーティリティで、どのリソースファイルをコンパイルし、どんなリソースファイルを生成するかといった情報と共に、.rcpファイルを使います。.rcpファイルはNotepad等のテキストエディターで作成します。ファイル内のコマンドのシンタックスはPilRCマニュアルで説明されています。マニュアルを読み、Bitmapsのセクションには特に注意を払ってください。PilRCは、Wes CherryとAaron Ardiriによって作られたフリーウエアで、インターネット上で入手できます。
詳細はPilRCマニュアルを読んでください。私のアプローチはPilRCのFlexible Bitmap Syntaxを使うことです。これはビットマップファミリーの特徴を持っていて、異なった色深度と解像度を持つ複数のビットマップを一緒にできます。これはNS Basicがアプリケーション内でビットマップを処理する方法と似ています。PilRCマニュアルによると、これがHiResビットマップを指定する唯一の方法です。以下は、非常に簡略したRCPファイルのシンタックスです。
通常のビットマップ:
BITMAP [ResType] ID Resource Id# BEGIN BITMAP Filename BPP Depth# [TRANSPARENT R# G# B#] [DENSITY Density#] ... etc END
大/小アイコン:
ICON (または SMALLICON) [ID Resource Id#] BEGIN BITMAP Filename BPP Depth# [TRANSPARENT R# G# B#] [DENSITY Density#] ... etc END
BITMAP [Res Type]:
このキーワードはビットマップファミリーで始まります。ResType (Resource Type) はオプションで、デフォルトは'Tbmp'です。リソースIDは必須です。ID#はPRJファイル内で相当するビットマップまたはビットマップファミリーと同じです。
ICON または SMALLICON:
これらのキーワードは
Large Icon または Small Icon ファミリーで始まります。ICON
(Large Icon) または SMALLICON (Small Icon)キーワードで始まる定義は、常に'tAIB'タイプが与えられ、オプションのResId#をつけることができます。ICONのデフォルトID#は1000で、SMALLICONのデフォルトは1001です。
ID Resource ID#:
上で説明したように、これはリソースID番号です。PRCファイル内のビットマップを入れ替える場合、この番号は相当するビットマップのリソースID番号と一致しなければなりません。しかし、プロジェクトファイル(PRJ)内の実際のID番号がなんであれ、PRCファイル内では、 Large Icons (ICON) はID=1000で、Small Icons (SMALLICON) は ID=1001を持っています。
BEGIN...END:
全て同じリソースIDをもつ、ビットマップファミリーを定義します。最低1つのLoResビットマップを含まないと、プログラムはエラーを起こします。
BPP Depth#:
ビットマップの深度(1ピクセル当たりのビット数)。
Depth#は1、2、4、8、16のどれかです。私は通常、8ビット(256色)アイコンとビットマップ(BPP 8)のみ処理します。
DENSITY Density#:
ビットマップまたはアイコンの密度。
PilRCがいうsingle densityビットマップとは、NS BasicでいうLoResです。PilRCがいうdouble densityビットマップとは、NS BasicでいうHiResです。Density# = 1 または 72はLoResイメージで、Density# = 2 または 144はHiResイメージです。一般的にビットマップファミリーは最低1つのsingle-densityのメンバーを含まなくてはなりません。デフォルトではアイコンのサイズはチェックされています:LoResには、大アイコンは22x22、32x22、32x32のどれかで、小アイコンは15x9です。HiResファイルのサイズは2倍です (44x44、64x44、64x64、および30x18)。
TRANSPARENT R# G# B#:
あ、これがこのチュートリアルの目的でした!このキーワードは、PilRCにビットマップとアイコンファイルをどう扱うかを指示します。 TRANSPARENT 204 204 153はコンパイラーに対し、 Red:204, Green:204, Blue:153を持つ全てのピクセルを透明にするように指示します。ですからイメージファイルを作成した時、透明色を選び、RGB値を記録しておいたわけです。
ICON ID 1000 BEGIN BITMAP "LargeIcon22x22.bmp" BPP 8 DENSITY 72 TRANSPARENT 204 204 153 BITMAP "LargeIcon44x44.bmp" BPP 8 DENSITY 144 TRANSPARENT 204 204 153 END ICON ID 1001 BEGIN BITMAP "SmallIcon15x9.bmp" BPP 8 DENSITY 72 TRANSPARENT 204 204 153 BITMAP "SmallIcon30x18.bmp" BPP 8 DENSITY 144 TRANSPARENT 204 204 153 END BITMAP ID 1007 BEGIN BITMAP "Bitmap30x30.bmp" BPP 8 DENSITY 72 TRANSPARENT 204 204 153 BITMAP "Bitmap60x60.bmp" BPP 8 DENSITY 144 TRANSPARENT 204 204 153 END
コメント: 上記の一連のコマンドは、PilRCに対し3つのビットマップリソースを作るよう指示しています。最初のセクションは、LoRes と HiRes 8-bit Large Icons (tAIB03e8.bin)ファミリーのリソースを作ります。2番目のセクションはLoRes と HiRes 8-bit Small Icons (tAIB03e9.bin)ファミリーのリソースを作ります。最後のセクションはLoRes と HiRes 8-bit bitmaps (Tbmp03ef.bin)ファミリーのリソースを作ります。注記:大/小アイコンには、PRJファイル内でどんなRes IDを持つかは問題ではありません。大アイコンは常にID=1000で、小アイコンはID=1001です。しかし、ビットマップのRes IDは必ず一致する必要があります。この場合、我々のプロジェクト内のビットマップのIDは1007です。
さて、PilRC-Demo.rcpを使ってビットマップを透明背景をもつバイナリーリソースへコンパイルする準備ができました。PilRCはDOSのコマンドライン・コンパイラーです。マニュアルを見るとかなり複雑なコマンドライン・シンタックスですが、私たちの目的に必要なシンタックスは単純です:
PILRC PilRC-Demo.rcp
コンパイルを簡単にするため、この1行のコマンドを含むBATファイルを作成します。テキストエディターを使ってファイルを作り、 PilRC-Demo.batとして保存してください。これでWindows Exporerから直接ビットマップをコンパイルできます。最後のステップは単純です:テンポラリーフォルダを作り、pilrc.exe、PilRC-Demo.rcp、PilRC-Demo.batと6つ全てのBMPファイルを入れます。次にWindows Explorerから作成したBATファイルをダブルクリックします。PilRCがDOS画面を開き、RCPファイルから68kリソースを生成してるメッセージを表示し、終了時に作成されたバイナリーファイルの一覧を表示します。
各出力ファイル名は、4文字リソースタイプに16進リソースIDと".bin"が付け加えられて構成されています。従って、我々の大アイコン(Resource Type 'tAIB', ID 1000/Hex 03e8 )のファミリーは、tAIB03e8.binと名前の付いたバイナリーファイルを生成します。同様に小アイコン(Resource Type 'tAIB', ID 1001/Hex 03e9 )はtAIB03e9.binとなります。最後に、ビットマップ(Resource Type 'Tbmp', ID 1007/Hex 03ef)のファミリーはTbmp03ef.binとなります。これらのバイナリーファイルが、PRCファイルに入っている不透明のビットマップファイルと入れ代わります。DOS画面は閉じて結構です。では、不透明なビットマップを今作った透明なビットマップと交換しましょう。
PAR (Palm Database Archiver)はPalmOSデータベース(.pdb)とリソース(.prc)ファイルを作成し取扱うユーティリティです。PilRC同様、PARはフリーウエアで、インターネット上で入手できます。PARはDavid Williamsが開発しました。
最初にPARを使って不透明ビットマップを削除します。それから、相当するバイナリーファイル(透明背景のビットマップとアイコン)と入れ替えます。PARのマニュアルを良く読んで、コマンドライン・シンタックスを理解してください。 PilRC同様、バッチファイルを作って作業を単純にできます。では3つ作ってみましょう:PRCファイルに入っているものを表示する;不透明ビットマップを削除する;作成したバイナリーファイルを加える。順番にParList.bat, ParDel.bat, ParAdd.batと名前を付けます。次のセクションでこれらのバッチファイルの作り方を説明します。バッチファイルができましたら、PARユーティリティ(par.exe)と共に、PilRCが入っているテンポラリーフォルダーにコピーしてください。最終ステップの準備が完了です。
必ずしも必要ではありませんが、PRCファイルの内容を表示するのはチュートリアルの目的に合っているでしょう。
PARコマンドラインのシンタックスは:
par t filename.prc
我々のBATファイル(ParList.bat)は1行含んでいます:par t TransBit.prc
このバッチファイルを実行すると、PRCファイル内の全てのリソースが表示されます:
最初の列はリソースタイプを表しています。2番目の列は16進で表されたIDで、3番目の列はサイズです。青くハイライトされた3つのエントリーは我々の大小アイコンとビットマップのファミリーです。PARの命名方法はPilRCと同じことに気が付いたでしょうか。
tAIB 03e8 (ID 1000, our Large Icon family) tAIB 03e9 (ID 1001, our Small Icon family) Tbmp 03ef (ID 1007, our Bitmap family)
PRCファイルからリソースを削除するPARのコマンドライン・シンタックス:par d filename.prc res type id#
我々のBATファイル(ParDel.bat)は、大/小アイコンのファミリーとビットマップファミリーを削除するよう指示していて、3行含んでいます。
par d TransBit.prc tAIB 1000 par d TransBit.prc tAIB 1001 par d TransBit.prc Tbmp 1007
バッチファイルをダブルクリックすると、PRCファイルから不透明ビットマップを削除します。
PRCファイルにリソースを加えるPARのコマンドライン・シンタックス:par d filename.prc resource filename
最後のBATファイル(ParAdd.bat)は、作成した3つのバイナリーファイルを加えるように指示しています。これらのバイナリーファイルは、透明背景を持つアイコンとビットマップを含んでいます。
par a TransBit.prc tAIB03e8.bin par a TransBit.prc tAIB03e9.bin par a TransBit.prc Tbmp03ef.bin
バッチファイルをダブルクリックすると、PRCファイルに新しいリソースが加えられます。
完了!全てが正しくいっていれば、透明背景を持つアイコンとビットマップを見ることができます。
新しいTransBit.prcをPOSEと実機にインストールして、大/小のアイコンの確認をしてください。次にTransBitを実行するとビットマップイメージが現れるはずです。醜いベージュの背景はなくなっているはずです。