0

私は、Photoshop のようなカラー パレットや、通常は 25px x 25px の正方形のカラー ボックスである一連の色からユーザーが選択できるアプリケーションのようなカラー パレットを作成しようとしています。

私は、C# Windows フォームのビットマップ パレットや、グラフィックスおよびビットマップ オブジェクトについて理解することに時間を費やしています。

私がやろうとしているのは、そのカラーパレット効果を生み出すために、特定の画像のすべての色を並べて積み重ねて、400px 以下で 400px 以下のパレットを作成することです。

これまでのところ、これは私が持っているものです。

これが私のコードです:

 private void Form1_Load(object sender, EventArgs e)
        {

            string path = Environment.CurrentDirectory + @"\sample.png";
            FileStream stream = new FileStream(path, FileMode.Open, FileAccess.Read);
            Image image = Bitmap.FromStream(stream);
            stream.Close();

            var colors = image.Palette.Entries;
            int cntColors = colors.Count();
            int half = cntColors / 2;

            Bitmap platte = new Bitmap(half * 50, half * 50);
            Graphics dc = Graphics.FromImage(platte);

            int currX = 0,
                currY = 0;

            for (int i = 0; i < cntColors; i++)
            {
                SolidBrush brush = new SolidBrush(Color.FromArgb(colors[i].A, colors[i].R, colors[i].G, colors[i].B));

                dc.FillRectangle(brush, currX, currY, 50, 50);

                if (currX == platte.Width)
                {
                    currX = 0;
                    currY += 50;
                }
                else
                {
                    currX += 50;
                }
            }
            pictureBox1.Image = platte;
        }

これは、bin フォルダーから読み込んだ画像でこのコードが生成しているもののスナップショットです。

ここに画像の説明を入力

これは、色に読み込んで使用している画像です。

ここに画像の説明を入力

これは特定のものではありません。私はこれを扱っており、画像からすべての色を取得し、それらをパレットに整理し、パレットをユーザーに表示する方法をよりよく理解しようとしています.

4

0 に答える 0