0

プログラムでリバースエンジニアリング作業を行っています。古いデータから引き出そうとしていることの 1 つは、以下のカラー パレットから選択された色です。

ここに画像の説明を入力

古いソフトウェアが色を参照する方法は、パレットのインデックスによるものです (0 は白、1 は黄色、2 はオレンジなど)。上記のパレットは何らかの標準的なレイアウトですか?

私の最善の希望は、同じインデックス番号を渡して色を取り戻すことができる.NETに組み込まれたクラスを見つけることですが、そのような素晴らしいものを見つけることはあまり期待できません.

ペイントとスポイトを使用してテーブル全体を手動でマップする以外に、これを簡単にするオプションはありますか?

4

3 に答える 3

1

私は最終的にSLaksの提案を使用し、画像をループして、各正方形の中心からピクセル値を読み取りました。TableLayoutPanelこれは、すべての色を a にロードして完全に機能する、私が実行した概念テストの簡単な証明です。

private void button1_Click(object sender, EventArgs e)
{
    string pngPath = @"E:\Color Pallet.png";
    tableLayoutPanel1.Controls.Clear();

    using (var bitmap = new Bitmap(pngPath))
    {
        for (int i = 0; i < 256; i++)
        {
            var color = bitmap.GetPixel(5 + (10*(i%16)), 5 + (10*(i/16)));
            tableLayoutPanel1.Controls.Add(new Panel {Dock = DockStyle.Fill, BackColor = color}, i % 16, i / 16);
        } 
    }

@SLaks、あなたがあなた自身の答えを投稿した場合、私は私のものを削除してあなたのものを受け入れます。

于 2013-05-09T18:04:30.810 に答える
1

これは 16 x 16 = 256 パレットです。古いソフトウェアでは、このパレットがgif ファイルに保存されていた可能性があります。このパレットから 16 進値の配列を作成できます (ハードコードまたは実行時)。

最初の行は「便利な」色の行です。

行 2 から 8 は、色相値を色相 338° から色相 335° にシフトします。

行 9 ~ 15 は、色相 0°、30°、60°、116°、180°、230°、および 300° の (7) 濃淡と (8) 色合い (HSB カラー モデル) を示しています。

最後の行は明らかにグレースケールです。

これは標準的なレイアウトではないと思います。正確な値が必要な場合は、スポイトを使用する必要があります...

于 2013-05-09T17:49:37.303 に答える