Есть код, который переводит все в двоичный код. Теперь мне нужно задать числу 1 - черный цвет, а 0 - белый цвет. Задав это, я хочу получать картинку с пикселями. Я пишу шифратор и идея такая: человек вводит свое предложение, нажимает кнопку "зашифровать", появляется картинка с черно-белыми пикселями. Как все это сделать?
Как задать цвет числу?
Формальный ответ на этот вопрос будет следующим:
var dict = new Dictionary<int, string>();
dict.Add(1, "черный");
dict.Add(0, "белый");
Здесь мы задали числу 1 черный цвет, а числу 0 - белый. Логично?
Ладно, ладно, реализуем то, о чем речь в комментариях.
var random = new Random();
var number = random.Next();
var result = Convert.ToString(number, 2);
result = result.Replace('1', 'b').Replace('0', 'r');
Console.WriteLine(result);
Сгенерировали случайное число, преобразовали его в двоичный вид, заменили единицы и нули на определенные символы. Число зашифровано. Правильно?
О, оказывается картинка нужна.
Используем System.Drawing.Bitmap
.
var bitmap = new Bitmap(32, 1);
for (int i = 0; i < 32; i++)
{
if ((number & (1 << i)) != 0)
bitmap.SetPixel(i, 0, Color.White);
else
bitmap.SetPixel(i, 0, Color.Black);
}
bitmap.Save("pic.bmp", ImageFormat.Bmp);
Для 32-битного числа создаем изображение размером 32x1.
В цикле определяем битовыми операциями значение каждого бита и задаем цвет соответствующему пикселю.
Предупреждение: метод SetPixel
работает очень медленно, поэтому его не стоит использовать при работе с большими изображениями. Вместо него используйте LockBits (поиск в помощь).
Откомментировать я пока не могу.
Берешь двоичный код и последовательно выделяешь каждую 1 или 0 (можно сделать при помощи логических операций и сдвигов) , потом полученный результат сравниваешь 1 или 0 и выводишь цветной пиксель и т.д. Метод вывод цвета зависит от типа приложения.
Виртуальный выделенный сервер (VDS) становится отличным выбором