Задать вопрос
@Jut_Rut

Почему я пишу один цвет, а у меня выходит другой?

Я писал программу, которая считывает байты файла и пишет их в пиксель. Но почему-то, когда я считываю цвет пикселя цвет отличается.
Вот ввод цвета пикселя код и консоль:
int a = binary.ReadByte();
                            int b = binary.ReadByte();
                            int c = binary.ReadByte();
                            int d = binary.ReadByte();
                            var color = Color.FromArgb(a, b, c, d);
                            bitmap.SetPixel(x, y, Color.FromArgb(a,b,c,d));
                            Console.WriteLine($"{x} {y}\n{a} {b} {c} {d}");


0 0
65 65 65 65

Вот вывод цвета пикселя код и консоль:
Color color = bitmap.GetPixel(x, y);
                        Console.WriteLine();
                        Console.WriteLine();
                        Console.WriteLine();
                        Console.WriteLine($"{color.A} {color.R} {color.G} {color.B}");
                        Console.WriteLine();
                        Console.WriteLine();
                        Console.WriteLine();


65 66 66 66

Начиная с второго байта, то есть символа начинает происходить то, что я не могу понять, объясните, пожалуйста, почему изменяется числа байта при чтении цвета пикселя?
  • Вопрос задан
  • 187 просмотров
Подписаться 2 Средний 4 комментария
Решения вопроса 1
@Jut_Rut Автор вопроса
Проблема была в альфаканале, он изменяет цвет при чтении битмапа
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
hint000
@hint000
у админа три руки
здесь вы выводите x,y
bitmap.SetPixel(x, y, Color.FromArgb(a,b,c,d));
0 0
65 65 65 65
а здесь не выводите, а вдруг там из-за какой-то ошибки уже другие x,y:
Console.WriteLine($"{color.A} {color.R} {color.G} {color.B}");
65 66 66 66

А ещё при выводе вы используете разные методы и удивляетесь разным результатам. Для чистоты эксперимента нужно использовать один и тот же метод. Например, так:
var color = Color.FromArgb(a, b, c, d);
Console.WriteLine($"{color.A} {color.R} {color.G} {color.B}");
bitmap.SetPixel(x, y, Color.FromArgb(a,b,c,d));
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы