フォーラム: Programming Team (スレッド #2333)

スキン機能の設計について (2003-03-25 12:01 by kuribo #4344)

RmakeRootpath+RmakeSkinPathによって、スキンファイルが置かれているフォルダを指定します。
アイコン等見た目に関わる素材は基本的にここから読み込むようにしようと思います。
設計としては、単純に必要な画像ファイル、もしくは見た目に関わる設定ファイルを置きます。
フォームでCreateで読み込んでも良いんですが、そうすると途中でスキンを変えるときに対応できないので、別のメソッドとして作るのを推奨します。
後は、フォルダのパスが無効である、もしくはファイルが不足した場合にも、標準データ等でとりあえず動きはするようにしてもらえると有り難いです。

標準データは設計時に組み込んでも良いんですが、そうすると実行ファイルが大きくなります。
使わないデータを実行ファイルに置くのは無駄になってしまいます。
アイコン程度で有ればさほど負担にはならないと思うんですが。

・・・という様な方向で考えています。
同じビットマップを違う用途に使い回す場合などに、容量が無駄に大きくなる事に関する対策等は用意していないので、INIで設定するとか、読み込み時に同一ファイルをチェックするとかで対処してください。
スキンセレクタではどのフォルダのデータを使うかしか設定しないので、後は各ウィンドウのスキン読み込み用メソッドにお任せすることになります。
まだスキンセレクタは実装していませんが、パスだけはデフォルトのが設定されるようになっています。

これはOpenDiscussionの方に書くべきだったかな・・・

RE: スキン機能の設計について (2003-03-26 03:13 by akasata #4352)

確かにそろそろワンセットで同様のルックアンド
フィールを実現する機構を考えたいなと思っていました。
それがスキンの機構を扱いやすくすることが期待でき
ますので。
今の考え方でOKだと思うので、具体的にどこにスキン用の
画像を利用するかとか、どこの見た目をカスタマイズ
出来るべきかとか、詰めていきましょう。
#4344 への返信

RE: スキン機能の設計について (2003-03-26 22:12 by kuribo #4360)

見た目は全部オリジナルに出来るように、というのが理想ですが、普通のWindowsアプリケーションとしては無理があります。
聞くところによれば、WindowsXPはOS自体のスキン機能があるらしく、標準ボタン等もそれなりに格好良くなるみたいです。(持ってないので確認できませんが)
という点から言うと、あまり標準コントロールはいじらない方がいいかという気もしています。(TButton等)
まあこれは標準のを使うかどうか選べるようにしても良いんですが。
縁があってサイズの伸縮ができるものも、対応が難しいです。

上記の点を踏まえて、
アイコン、スクロールの余白、フォームの表面の3種類を考えています。
ウィンドウのバーも変えたいんですが、それをやると最大化とかが出来なくなるんですよね・・・
そしてアイコンの大きさをINIで保存します。
フォームの大きさとかは個人に依存するので別に保存しようと思いますが、アイコンを貼るボタンのサイズに関してはスキンの領域でしょう。
ボタンを自作するなら、フォントの処理方法も含まれます。

後はスキン職人さん(居ればですが)の意見などを踏まえつつ、適当に増やせばよいのではないのかと思います。
あまりデータの互換性も考えなくて良いので。(ただの画像データだし)
ダイアログの表面は繰り返しパターンではなく、固定サイズ画像の方が面白いと思うのですが、そうするとウィンドウサイズを変えられなくなるんですよね。
#4352 への返信