我正在尝试创建一个调色板,例如 Photoshop 中的调色板或任何应用程序中的调色板,它允许用户从一组通常为 25px x 25px 方形颜色框的颜色中进行选择。
我正在花时间了解 c# windows 窗体中的位图调色板和/或图形和位图对象。
我正在尝试做的是创建一个不宽于 400 像素且不高于 400 像素的调色板,它将给定图像中的所有颜色组织并堆叠在一起,以产生该调色板效果。
到目前为止,这就是我所拥有的。
这是我的代码:
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 文件夹加载的图像生成的快照。
这是我正在加载并用于颜色的图像。
这不是针对任何特定的,我只是在处理这个问题,并试图更好地了解如何从图像中提取所有颜色,将它们组织在调色板中,然后将调色板显示给用户。