日期:2014-05-17  浏览次数:21049 次

C# 修改图片的底色!
怎么用程序修改图片的背景呀!

图片内容 只有字体 


 如:

  Welcome!

背景色为蓝色, 我想用程序任意修改背景!

------解决方案--------------------
如果是png图片的话直接一张图片画在另外一张图片上就行了,至于jpg,gif交给画图软件吧
------解决方案--------------------
使用
GetPixel,
SetPixel,
方法改变每个点的像素值
------解决方案--------------------

using System.Drawing.Drawing2D;

private static Bitmap PImage(Bitmap src)
{
int w = src.Width;
int h = src.Height;

//构建与原图像大小一样的模版图像
Bitmap dstBitmap = new Bitmap(src.Width, src.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb);

//将原图像存入内存
System.Drawing.Imaging.BitmapData srcData = src.LockBits(new Rectangle(0, 0, w, h), System.Drawing.Imaging.ImageLockMode.ReadOnly, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
System.Drawing.Imaging.BitmapData dstData = dstBitmap.LockBits(new Rectangle(0, 0, w, h), System.Drawing.Imaging.ImageLockMode.WriteOnly, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
unsafe
{
byte* pIn = (byte*)srcData.Scan0.ToPointer();
byte* pOut = (byte*)dstData.Scan0.ToPointer();
byte* p;
int stride = srcData.Stride;
int r, g, b;
for (int y = 0; y < h; y++)
{
for (int x = 0; x < w; x++)
{
p = pIn;
r = p[2];
g = p[1];
b = p[0];

if(r==0&&b==255&&g==0)//判断当前像素为蓝色
{
pOut[0] = 你要的颜色
pOut[1] = 你要的颜色
pOut[2] = 你要的颜色
}
pIn += 3;
pOut += 3;
}
pIn += srcData.Stride - w * 3;
pOut += srcData.Stride - w * 3;
}
src.UnlockBits(srcData);
dstBitmap.UnlockBits(dstData);
return dstBitmap;
}

}

------解决方案--------------------
我说点奇葩的方法吧
如果是已经做好的图片的话,加一个button,然后在属性里改成透明,平且把button的样式改成plat还是什么来着,就是看起来像picturebox一样的外表
点资源管理->属性->添加资源 把图片加到资源中,就是那个resource里
然后让那个button的背景=propety.resource.图片名
上边显示的字就在button.text里改就好
就OK啦