C#如何给一张png透明图片的背景填充为白色 50

 我来答
百度网友ada2ead
2019-07-08 · TA获得超过727个赞
知道小有建树答主
回答量:1118
采纳率:63%
帮助的人:200万
展开全部
用PS打开,在图片下面新建一个图层,填充白色就可以
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
魔法软糖&#x2122;
2019-07-08 · TA获得超过838个赞
知道小有建树答主
回答量:822
采纳率:94%
帮助的人:150万
展开全部

您好,软糖来回答罗。

解决方案1: 获取透明区域后,往这个区域绘制白色。

========================================

Graphics g = Graphics.FromImage(Bitmap1);

g.DrawPath(Pens.White, 透明路线);

===============================================

/// <summary>返回Region,表示由 透明路线() 新建的区域</summary>

public Region 透明区域(Bitmap M位图) { return new Region(透明路线(M位图)); }

/// <summary>返回 [<see cref="GraphicsPath"/>] ,表示所有透明的点组成的路线</summary>  

public GraphicsPath 透明路线(Bitmap M位图) {

GraphicsPath gp = new GraphicsPath(); //新建图像路径来存储透明的点

for (int x = 0; x < 源宽; x++) {

for (int y = 0; y < 源高; y++) {

Color c = M位图.GetPixel(x, y);

if (c.A == 0) { gp.AddRectangle(new Rectangle(x, y, 1, 1)); } //添加点到路径

}

}           

return gp; //返回路径

}

===============================================

解决方案2:可以先转化为Bmp格式,逐像素填充白色后再转化回来。

===============================================

/// <summary>

/// 将此 <see cref="Bitmap"/> 内所有原颜色替换为新颜色

/// <para>如果含有索引的图片格式(例如png),将先转化为32位Bmp进行颜色替换后再转换回来,可能会较慢。</para>

/// </summary>  

public void 替换颜色(Bitmap M位图, Color 原颜色, Color 新颜色) {

Bitmap bmp;

if (M位图.PixelFormat.HasFlag(PixelFormat.Indexed)) {

bmp = new Bitmap(M位图.Width, M位图.Height, PixelFormat.Format32bppRgb);

using (var gr = Graphics.FromImage(bmp)) {

gr.DrawImage(M位图, new Rectangle(0, 0, M位图.Width, M位图.Height));

}

int argb值 = 原颜色.ToArgb();

for (int x = 0; x < 源宽; x++) {

for (int y = 0; y < 源高; y++) {

Color c = M位图.GetPixel(x, y);

if (c.ToArgb() == argb值) { M位图.SetPixel(x, y, 新颜色); }

}

}

using (var gr = Graphics.FromImage(M位图)) {

gr.DrawImage(bmp, new Rectangle(0, 0, M位图.Width, M位图.Height));

}

} else {              

int argb值 = 原颜色.ToArgb();

for (int x = 0; x < 源宽; x++) {

for (int y = 0; y < 源高; y++) {

Color c = M位图.GetPixel(x, y);

if (c.ToArgb() == argb值) { M位图.SetPixel(x, y, 新颜色); }

}

}

}

}

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式