写入BMP文件失败

时间:2018-07-03 09:28:57

标签: c# bitmap image-manipulation bmp

我正在尝试生成一个包含一些文本的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 :(得分:2)

PNG起作用而BMP不起作用的原因是PNG允许图像透明。在BMP中,图像的透明部分被渲染为黑色(因为它必须丢弃alpha通道)。您的文本也使用黑色画笔,因此您将获得黑色图像。

对于屏幕渲染而言,这不是问题,因为那里支持透明性。