Как получить RGB значение пикселя С# при градации серого?
В одном проекте через через Bitmap я в определённых пикселях делаю градацию серого таким кодом:
for (x = 0; x < c * firstKey; x += firstKey)
{
for (y = n; y < n + 1; y++)
{
Color newColor = Color.FromArgb(forSat[p], forSat[p], forSat[p]);
image1.SetPixel(x, y, newColor);
textBox2.AppendText(forSat[p] + " ");
}
p++;
n += secondKey;
}
Где firstKey and secondKey это смещение по пикселям. "с" это сколько количество пикселей для замены. Массив forSat[p] хранит значения для FromArgb каждого пикселя. В другом проекте я должен получить значения этих пикселей. Вот как это стараюсь сделать я:
for (x = 0; x < key * firstKey; x += firstKey)
{
for (y = n; y < n + 1; y++)
{
Color pixelColor = myBitmap.GetPixel(x, y);
textBox1.AppendText(pixelColor + " ");
}
p++;
n += secondKey;
}
Где все те же переменные с тем же предназначением, только Key это значение количества пикселей для перебора. Но вот только получаю я значения совсем не те. Хотя по сути должен был бы получить те значение, что закладывались в первом проекте.
Сохранение:
if (pictureBox1.Image != null)
{
SaveFileDialog sfd = new SaveFileDialog();
sfd.Title = "Сохранить картинку как...";
sfd.OverwritePrompt = true;
sfd.CheckPathExists = true;
sfd.Filter = "Image Files(*.BMP) |*.BMP|Image Files(*.JPG) |*.JPG| Image Files(*.PNG) |*.PNG|All files(*.*)|*.*";
sfd.ShowHelp = true;
if (sfd.ShowDialog() == DialogResult.OK)
{
try
{
pictureBox1.Image.Save(sfd.FileName);
}
catch
{
MessageBox.Show("Невозможно сохранить изображение", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
Открываю:
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
pictureBox1.Image = new Bitmap(openFileDialog1.FileName);
}