Ошибка записи файла BMP - PullRequest
0 голосов
/ 03 июля 2018

Я пытаюсь создать файл BMP с текстом. Я создал приложение winform, и я могу успешно создать BMP (я без проблем отобразил его на коробке с картинками). Однако, когда я сохраняю его в файл, я просто получаю черное изображение.

Мой код

private void btnNameUsage_Click(object sender, EventArgs e)
{
   Bitmap bmp = new Bitmap(width, height);

   string name = "Hello how are you";
   string date = DateTime.Now.Date.ToString(); 

   Graphics thegraphics = Graphics.FromImage(bmp);

   string complete = date+"\n"+name ;

   using (Font font1 = new Font("Arial", 24, FontStyle.Regular, GraphicsUnit.Pixel))
   using (var sf = new StringFormat()
      {
           Alignment = StringAlignment.Center,
           LineAlignment = StringAlignment.Center,
       })
        {
         thegraphics.DrawString(complete, font1, Brushes.Black, new Rectangle(0, 0, bmp.Width, bmp.Height), sf);
         }


   picBoxImage.Image = bmp;  //THIS WORKS

   //thegraphics.Flush();//I am not sure this is necessary and it changes nothing anyway

  bmp.Save(@"theImage.bmp",ImageFormat.Bmp);//I tried only one argument but it gave a png file. Now only a black BMP

   }

Я потерял то, что я делаю здесь неправильно. Ценю помощь.

1 Ответ

0 голосов
/ 03 июля 2018

Причина, по которой PNG работает, а BMP - нет, заключается в том, что PNG обеспечивает прозрачность изображения. В BMP прозрачные части вашего изображения отображаются черными (так как он должен пропустить альфа-канал). Ваш текст также использует черную кисть, поэтому вы получите черное изображение.

Для визуализации на экране это не проблема, поскольку там поддерживается прозрачность.

...