Color.Red のような色名を配列に取り込むには?(VB.NET)

解決


夏の朝も天玉うどん  2005-07-10 19:31:29  No: 123381

Color.AliceBlue:Color.AntiqueWhite  のような色名を配列に取り込み
利用したいと思います。一つ一つ手入力しないでこれをコードで実現
する手段はないものでしょうか?


ガッ  2005-07-10 19:52:37  No: 123382

Color[] colors={Color.AliceBlue,Color.AntiwueWhite,...}
という表記以外で、具体的にどういう風なインタフェイスを予想していますか?

※ヘルプでColorの静的なプロパティを見ることが出来ますが、
  この情報から色名だけを持ってきて、Color.FromName()で作っても出来ますよね?


夏の朝も天玉うどん  2005-07-10 20:13:26  No: 123383

ガッ様レスありがとうございます。
使用法としては先に配列に色名を取り込んで置き、自作のスクリプトもどき
で例えば
Line(0,0)-(100,100)、AliceBlue(他にAntiqueWhiteなど色々)
のような文から色名部分を取り出し比較し、その色を用いて線分等を
描く等の用法を検討しています。よろしくお願いします。


ガッ  2005-07-10 20:23:02  No: 123384

ノ<どうやら特殊な利用法ですね。
ですが、「スクリプトとして、テキストに書かれている」のなら、
文字列操作で「色名の部分」だけを取り出すことができるのでは?
もう一度Color構造体のメンバを調べてみましょう。

※というかFromName()では駄目なのだろうか…


夏の朝も天玉うどん  2005-07-10 21:01:10  No: 123385

ガッ様素早いレスありがとうございます。
改めて検討したところFromName()は今ここで質問していることの直接の
解答でないのでそれと気づきませんでしたが、つぎの段階の答えになっ
ていることに気づきました。本当にありがとうございます。

ただ現在直面していることは色名指定が正確におこなわれているという
前提ではなく  AliceBlue  が  AliceBluu 等になっている場合もありと
いうことで、それを配列に入っている正しい色名と比較し、処理を振り
分けるためその色名をすべて配列に取り込みたいのですが。
よろしくお願いします。


ガッ  2005-07-10 21:28:29  No: 123386

FromName()のヘルプをもう一度引きましたか?
また、
> 色名をすべて配列に取り込みたいのですが。
というのは、私が最初に回答した中にヒントがあります。

※そういえば、.NETのEnumって、Enumクラスの実装だっけ…?
  そうなればEnumクラスに対して行えるメソッドに何かいいのは無いのかな?
  →C#なら出来そうな予感(orz
    →.NET触ったことが少ないので、あんまり言及できる所ではない悪寒もする…


夏の朝も天玉うどん  2005-07-11 00:25:48  No: 123387

ガッ様、お世話になりました。無事に解決いたしました。列挙体などと
いうものは初めて使用しましたし、For  Eachなるものも初めて
使用しました。(ほとんど理解せずに使用しています)

以下のごとく無事配列に取り込めました。
今日は  Me.BackColor = Color.FromName("AliceBlue")  のような
使用法も学ぶことができ「棚から牡丹餅」「一石二鳥」大変意義のある
一日となりました。ありがとうございます。
   
        Dim SysColor() As String        'システムカラーを入れる配列
        Dim KnoColor() As String        'その他の定義色を入れる配列
        Dim SysCount As Integer
        Dim KnoCount As Integer
        Dim ChangeFlg As Boolean        'システムカラーからその他の定義色に切り替わったフラグ
        Dim ColorName As String

        For Each ColorName In [Enum].GetNames(GetType(KnownColor))
            If ColorName = "AliceBlue" Then ChangeFlg = True
            If ChangeFlg = False Then       'システムカラー
                SysCount = SysCount + 1
                ReDim Preserve SysColor(SysCount)
                SysColor(SysCount) = ColorName
                ListBox1.Items.Add(ColorName)
            Else                            'その他の定義色
                KnoCount = KnoCount + 1
                ReDim Preserve KnoColor(KnoCount)
                KnoColor(KnoCount) = ColorName
                ListBox2.Items.Add(ColorName)
            End If
        Next ColorName


ガッ  2005-07-11 02:19:54  No: 123388

> 夏の朝も天玉うどんさん
ぃぇぃぇ、ほとんど何も書いていないようなので(orz
お陰さまで、私もEnumの概略をつかむことが出来ました。
ありがとうございました、でゎ。


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加