C#中怎么将一张图片中的白色做成透明的,而其他颜色保持不变??? 急!!! 各位大侠帮帮忙!!!

if(pictureBox1.Image==null)return;Bitmapbmp=newBitmap(pictureBox1.Image,pictureBox1.I... if (pictureBox1.Image == null)
return;
Bitmap bmp = new Bitmap(pictureBox1.Image, pictureBox1.Image.Size);
BitmapData data = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadWrite, bmp.PixelFormat);
int length = data.Stride * data.Height;
IntPtr ptr = data.Scan0;
byte[] buff = new byte[length];
Marshal.Copy(ptr, buff, 0, length);
for (int i = 3; i < length; i += 4)
{
if (buff[i - 1] >= 230 && buff[i - 2] >= 230 && buff[i - 3] >= 230)
{
buff[i] = 0;
}
}
Marshal.Copy(buff, 0, ptr, length);
bmp.UnlockBits(data);

pictureBox2.Image = bmp;

我改成上面的代码,实现了透明功能,但是,怎么讲pictureBox2.Image 保存为PNG图片???
展开
 我来答
zhang_junchen
2011-08-10 · TA获得超过3019个赞
知道小有建树答主
回答量:858
采纳率:0%
帮助的人:1086万
展开全部
Bitmap bitmap=new Bitmap("filename");
bitmap.MakeTransparent(Color.White);
bitmap.Save("newfilename");

注意,后面保存的文件名好像不能跟开始的那个文件名重复,也就是不能覆盖原文件

把Bitmap保存为png,代码(bmp为你代码中给定的Bitmap):
bmp.Save("pngFilename", ImageFormat.Png);
更多追问追答
追问
但是我在调用后,程序运行一次可以,第二次就中断,也就是一次性的!
追答
中断时弹什么错没有?
是不是你几个filename搞混淆了
cnf1980
2011-08-08 · TA获得超过1.5万个赞
知道大有可为答主
回答量:1.2万
采纳率:54%
帮助的人:2587万
展开全部
导入PNG白色索引为透明alpha通道
追问
怎么弄的,有代码么?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式