我有一个PictureBox,其中有很多透明的png被绘制成......
现在我想将此PictureBox的内容保存到文件中,但没有透明度。
我该怎么做?
我已经尝试过像这样删除Image中的透明度,但是它不起作用,保存后我仍然有一个透明的图像。
...
removeTransparency(pictureBox.Image).Save(saveFileDialog.FileName);
private Bitmap removeTransparency(Image transparentImage)
{
Bitmap src = new Bitmap(transparentImage);
Bitmap newImage = new Bitmap(src.Size.Width, src.Size.Height);
Graphics g = Graphics.FromImage(newImage);
g.DrawRectangle(new Pen(new SolidBrush(Color.White)), 0, 0, newImage.Width, newImage.Height);
g.DrawImage(src, 0, 0);
return newImage;
}
答案 0 :(得分:1)
您可以循环浏览所有像素(请不要使用GetPixel / SetPixel)来更改颜色,也可以创建另一个相同大小的位图,从图像创建图形上下文,用您喜欢的背景颜色清除图像然后在上面绘制图像(因此透明像素将被背景颜色替换)。
你做过这样的事吗?
public static Bitmap Repaint(Bitmap source, Color backgroundColor)
{
Bitmap result = new Bitmap(source.Width, source.Height, PixelFormat.Format32bppArgb);
using (Graphics g = Graphics.FromImage(result))
{
g.Clear(backgroundColor);
g.DrawImage(source, new Rectangle(0, 0, source.Width, source.Height));
}
return result;
}