えーっと(03)ではDBにカラーコードを格納してやってみた訳ですが・・・
カラーデータは普通DBに持たないであろうと想像した
理由がなんとなく分かってきたかも~
普通に画像データを用意しちゃう方が早いから?かなぁ^^;
うーん、ホントいろんな知識と発想が必要になるよなぁWeb関係は~
だから面白いともいう。
(03)では、「色のデータをDBに持ってバインドする」
という方式も選択できたぞ、ってことだけど、
ぜひともその方式を採用しなくてはならない!
てな場面は少ないかもですね^^;
すみません、内部を見てない人にはわかりにくいと思いますが・・・
Project DIVA のゲームには、タグというのがあって、
タグには色が付いてるわけです。
テーブルの構成はこんな感じ(余計な修飾は省いています)
CREATE TABLE [dbo].[tag_tbl](
[tag_id] [int] NOT NULL,
[tag_name] [nchar](10) NOT NULL,
[color] [char](6) NOT NULL
)
で、以前は、color というカラムに#FFFFFF などと色を表すデータを
格納して、color をバインドすることでコントロールの色を変更しました。
しかし、このやり方は画像データの取り扱い経験があまりないため、
引き出しからこんな方法しか思いつかなかったってところで・・・
そもそも、その色の画像ファイル(gifなど)を用意してしまうのが
スタンダードなのかもしれません。
<asp:Image ID="Image1" runat="server"
ImageUrl='<%# Eval("tag_id", "~/images/tag_{0}.gif") %>' />
<asp:Label ID="music_nameLabel" runat="server"
画像ファイル名 tag_?.gif の「?」部分にtag_id をバインドします。
でもって、
images フォルダ内に、
tag_1.gif
tag_2.gif
tag_3.gif
などと画像ファイルを用意して、
それぞれが対応する色に塗ってある絵であればOKと。
こうすると、まったくもって color カラムは不要ですね^^;
背景の変更はどうしましょうか?
たとえば、パネルコントロールを使うと、BackImageUrl というプロパティに
画像ファイルを指定すると、その画像を並べて背景にしてくれます。
今回は、新しい試みとして(モンハンのスコサバにはない機能として)
背景画像で、選択中の難易度がわかるようにしたかったので、
次のような関数を作ってみました。
// 背景画像設定関数
protected void SetBackGroundGif(Panel p, string id)
{
if (id == null) return;
if(id == "") id = "2";
// 背景画像をパネルに設定
p.BackImageUrl = "~/images/difficulty_id_" + id + ".gif";
}
引数にパネルと、難易度IDをとり、
難易度IDを含む画像ファイル名をパネルの背景に指定してます。
エラー処理はちょっといい加減ですが・・・w
例外でも出す方が良いかもしれません。
aspx ファイルの方は、もろもろの画面要素を囲むように
パネルコントロールを追加しました。
<asp:Panel ID="BackGroundPanel" runat="server">
・
・
・
</asp:Panel>
関数をコールする部分は例えばこんな感じ。
SetBackGroundGif(BackGroundPanel, Session["Difficulty_id"].ToString());
ともあれ、カラー情報とは関係ない難易度IDが1つあるだけで、
「EASY」「NORMAL」「HARD」の文字と、文字の色について
特にDBに存在しなくても表現できてしまいました。
画像ファイルだから当然といえば当然ですよね^^;
この記事にコメントする
(0)