- PR -

文字列から色を作成したい。

投稿者投稿内容
js
常連さん
会議室デビュー日: 2004/09/14
投稿数: 47
投稿日時: 2006-01-12 17:04
こんにちは。テキストボックスなどの背景色に文字列の System.Drawing.Color から色を指定することはできないでしょうか?
以下のような定義済みの色の場合は正しくできるのですが。

if(colorDialog1.ShowDialog() == DialogResult.OK)
{
if(colorDialog1.Color.IsKnownColor == false)
{
MessageBox.Show("定義済みの色ではない");
return;
}
string strColor = colorDialog1.Color.ToKnownColor().ToString();
/*
ここの所を
textBox1.BackColor = strColor;
のようにしたいです。
/*
textBox1.BackColor = Color.FromName(strColor);
}

この定義済みの色というのがほんの数色しなないのでせっかくカラーダイアログボックスで
たくさん色が出てもほとんど指定できません。

実際にはデータベースの文字列項目に色の名前を保存して使いたいと思っています。

color
---------------------
System.Drawing.Color.Red

何か方法があれば教えてください。よろしくお願いします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-01-12 17:29
引用:

jsさんの書き込み (2006-01-12 17:04) より:

文字列の System.Drawing.Color から色を指定することはできないでしょうか?


文字列から、System.Drawing.Color のインスタンスを取得できないか? と読み取りました。

コード:

    private static void MakiMakiLove() {
        string stColorName = "Blue";
        System.Type hType  = typeof(System.Drawing.KnownColor);

        if (System.Enum.IsDefined(hType, stColorName)) {
            System.Drawing.KnownColor uKnownColor = (
                (System.Drawing.KnownColor)System.Enum.Parse(hType, stColorName)
            );

            System.Drawing.Color color = (
                System.Drawing.Color.FromKnownColor(uKnownColor)
            );

            MessageBox.Show("あなたは " + color.ToString() + " をゲットした");
        }
    }


こんな感じでいかがでしょうか?

引用:

実際にはデータベースの文字列項目に色の名前を保存して使いたいと思っています。


色の名前ですが、方言があるものもありますので、#RRGGBB 指定をお勧めします。
やるにしても、名前から RGB 値にマッピングするテーブルを用意すべきだと思います。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
lalupin4
大ベテラン
会議室デビュー日: 2004/07/26
投稿数: 163
投稿日時: 2006-01-12 17:29
 なんか、データベース使うならできそうですけどね。

テーブルに名前、赤、緑、青とかにして
コード:
Color.FromArgb()


と。
たつごろー
ぬし
会議室デビュー日: 2004/10/25
投稿数: 496
投稿日時: 2006-01-12 17:29
引用:

こんにちは。テキストボックスなどの背景色に文字列の System.Drawing.Color から色を指定することはできないでしょうか?


惜しいです。
Color構造体まで到達してたんですから、ぜひMSDN Libraryをみてみてほしかったところです。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfSystemDrawingColorClassTopic.asp?frame=true
から
Color.FromArgb メソッド
Color.FromName メソッド
を探してみてください。
目的のものと違ったらその近辺のメソッドも調べてみてください。

_________________
たつごろー
codeseek
こみゅぷらす
lalupin4
大ベテラン
会議室デビュー日: 2004/07/26
投稿数: 163
投稿日時: 2006-01-12 17:30
 同時多発イロ、ヤッホー。
たつごろー
ぬし
会議室デビュー日: 2004/10/25
投稿数: 496
投稿日時: 2006-01-12 17:33
引用:

lalupin4さんの書き込み (2006-01-12 17:30) より:
 同時多発イロ、ヤッホー。


回答者の特徴も出てますしね。
_________________
たつごろー
codeseek
こみゅぷらす
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-01-12 17:37
引用:

たつごろーさんの書き込み (2006-01-12 17:29) より:

Color.FromName メソッド


そっか、KnownColor 列挙体と同じマップを見てるし、
取得できたかどうかの検証は、Is 〜 で出来ましたね。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
js
常連さん
会議室デビュー日: 2004/09/14
投稿数: 47
投稿日時: 2006-01-12 17:44
解決。何かできました(>_<)
データベースにダイアログで得たRGBを保存しておいて読込む時
Color.FromArgb("赤","緑","青")
みたいな感じで。
どうもありがとうございました。

スキルアップ/キャリアアップ(JOB@IT)