1

嗨,我有以下代码...我在其中生成自己的图像并粘贴到 excel 工作表中,请你告诉我为什么它的背景颜色总是蓝色的?是否有可能以某种方式改变它,例如使其透明或白色?(我试过 flag.MakeTransparent(); 但它也不起作用)

       Bitmap flag = new Bitmap(200,200);
       using (Graphics g = Graphics.FromImage(flag))
        {
            g.DrawString("N", new Font("Verdana", 80, FontStyle.Bold), 
                         new SolidBrush(Color.Black), new PointF(40, 30));
        }
       System.Windows.Forms.Clipboard.SetDataObject(flag, true);
       ws.Paste(range, Type.Missing);  

当我使用以下

       flag.Save("C:\\image.png",System.Drawing.Imaging.ImageFormat.Png);

image.png 具有透明背景...

多谢!

4

2 回答 2

2

我知道这是对旧帖子的回答,但万一其他人在谷歌上找到它(就像我一样):

bmp 不包含背景信息,因此必须对其进行转换:

内存流毫秒 = 新的内存流();bmp.Save(ms, ImageFormat.Png); IDataObject 数据对象 = 新数据对象();dataObject.SetData("PNG", false, ms); System.Windows.Forms.Clipboard.SetDataObject(dataObject, false);

解决方案是从这个地址复制的,完整的解决方案是: http ://www.microsoft.com/communities/newsgroups/en-us/default.aspx?dg=microsoft.public.dotnet.framework.drawing&tid=64a90f25- 9dd5-4d27-8d69-02993d0a35ed&cat=en_US_fa599017-a9ec-4987-b602-c19ba8e5a4da&lang=en&cr=US&sloc=&p=1

于 2010-01-07T12:45:52.497 回答
0

您是否尝试过首先填充图像?

 Image i = new Bitmap(200, 200);
 Graphics g = Graphics.FromImage(i);
 g.FillRectangle(Brushes.Transparent, 0, 0, 200, 200);
于 2009-07-24T17:48:18.377 回答