C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.61790 の関連記事表示

<< 0 >>
■61790  Re[5]: カラー型のデータをストリングに変換する方法
□投稿者/ 魔界の仮面弁士 -(2011/09/05(Mon) 22:03:53)
    No61785 (佐藤 正弘 さん) に返信
    > vb5no

    VB5 の色は OLE カラーとも呼ばれるもので、16進数値では &H00BBGGRR で表されます。
    また、OLE カラーは &H80000000〜&H80000018 の範囲を取ることもあり、これはシステムカラーを意味します。

    たとえば VB5 では、vbBlack は &H00000000 になりますし、vbDesktop は &H80000001 です。

    >   vb5で使ったQBColorの例えば、黒の場合は 0、

    VB5 の vbBlack は数値としては &H0 で表されましたが、.NET の Color.Black は
    &HFF000000 になります。この場合の先頭 FF は Alpha 値であり、完全不透明を意味します。

    VB5 の色は BGR 順の &H00BBGGRR (または &H800000xx )の形式でしたが、
    .NET の ARGB 表現では RGB 順の &HAARRGGBB であることに注意が必要です。


    > 青の場合は8388608、緑の場合は32768、シアンの場合は8921376、赤の場合は128という具合の文字列を想定
    > していたものですから。

    VB5 の QBColor 関数も VB2010 の QBColor メソッドも、戻り値はいずれも
    「32bit 整数型」であって、「文字列型」では無いことに注意してください。

    ・VB5 の VBA.Information.QBColor は、As Long(あるいは As OLE_COLOR)。
    ・VB2010 の Microsoft.VisualBasic.Information.QBColor は As Integer(あるいは As Int32)。


    単純に Integer から String にするという場合においても、10進数だったり 16進数だったり、
    先頭ゼロ埋めだったりと、いろいろな形式があります。端折らずにきちんと説明しましょう。


    なお、QBColor メソッドの戻り値である整数を Color 構造体に変換する場合は、
    先述した ColorTranslator.FromOle メソッドを使えば OK です。たとえば
    QBColor(0) は &H0(0)、QBColor(1) は &H800000(8388608)、QBColor(2) は &H8000(32768) ですが、

     Dim c0 As Color = ColorTranslator.FromOle(QBColor(0))
     Dim c1 As Color = ColorTranslator.FromOle(QBColor(1))
     Dim c2 As Color = ColorTranslator.FromOle(QBColor(2))

    とした場合、c0 は Black、c1 は Navy、c2 は Green に変換されます。
    (QBColor 以外の色についても、同様に変換できます)


    逆に、Navy な色を
    > 青の場合は8388608
    に戻したい場合には、
     Dim i As Integer = ColorTranslator.ToOle(c1)
    のようになります。あるいは、ARGB 値から BGR 値に変換するために
     Dim j As Integer = c1.B * &H10000 + c1.G * &H100 + c1.R
    のようにすることもできますし、16進数文字列がお望みなら
     Dim s As String = String.Format("{2:X2}{1:X2}{0:X2}", c1.R, c1.G, c1.B)
    と記述できます。
記事No.61766 のレス /過去ログ103より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -