DoubleM

我的工作是:需求分析、用户体验、项目管理、类设计、技术方向选择、解决复杂的技术问题。 这些领域的事情相对比较轻松,所以也经常有闲写写代码,不过多以折磨自己的大脑为目标,兴趣使然。
  新随笔  :: 订阅 订阅  :: 管理

C# 合并图片

Posted on 2011-08-09 20:05  DoubleMM  阅读(8079)  评论(0编辑  收藏  举报
如下是自己曾经编写过的代码,放到这个地方,免的以后自己在去查看怎么编写这样的代码.....

1:图片上写字,并设置背景色
    
#region 创建树节点的图标
/// <summary>
/// 创建树节点的图标
/// </summary>
/// <param name="txt"></param>
/// <param name="txtColor"></param>
/// <returns></returns>
private Bitmap CreateNodeImg(string txt, Color txtColor)
{
if (txtColor == Color.Transparent)
txtColor
= Color.Black;
Bitmap newBitMap
= new Bitmap(12, 14);
Graphics g
= Graphics.FromImage(newBitMap);
if (txtColor != Color.Black)
{
g.Clear(txtColor);
//背景色
}
g.TextRenderingHint
= System.Drawing.Text.TextRenderingHint.AntiAlias;
FontFamily fm
= new FontFamily("Arial");
Font font
= new Font(fm, 12, FontStyle.Regular, GraphicsUnit.Pixel);
SolidBrush sb
= new SolidBrush(Color.Black);
g.DrawString(txt, font, sb,
new PointF(0, 0));
g.Dispose();
return newBitMap;
}

2 合并图片
  #region 合并图片
/// <summary>
/// 合并图片
/// </summary>
/// <param name="maps"></param>
/// <returns></returns>
private Bitmap MergerImg(params Bitmap[] maps)
{
int i = maps.Length;
if (i == 0)
throw new Exception("图片数不能够为0");
//创建要显示的图片对象,根据参数的个数设置宽度
Bitmap backgroudImg = new Bitmap(i * 12, 16);
Graphics g
= Graphics.FromImage(backgroudImg);
//清除画布,背景设置为白色
g.Clear(System.Drawing.Color.White);
for (int j = 0; j < i; j++)
{
g.DrawImage(maps[j], j
* 11, 0, maps[j].Width, maps[j].Height);
}
g.Dispose();
return backgroudImg;
}
#endregion
#region 合并图片
/// <summary>
/// 合并图片
/// </summary>
/// <param name="bitMapDic"></param>
/// <returns></returns>
private Bitmap MergerImg(Dictionary<string, Bitmap> bitMapDic)
{
if (bitMapDic == null || bitMapDic.Count == 0)
throw new Exception("图片数不能够为0");
//创建要显示的图片对象,根据参数的个数设置宽度
Bitmap backgroudImg = new Bitmap(bitMapDic.Count * 12, 16);
Graphics g
= Graphics.FromImage(backgroudImg);
//清除画布,背景设置为白色
g.Clear(System.Drawing.Color.White);
int j = 0;
foreach (KeyValuePair<string, Bitmap> entry in bitMapDic)
{
Bitmap map
= entry.Value;
g.DrawImage(map, j
* 11, 0, map.Width, map.Height);
j
++;
}
g.Dispose();
return backgroudImg;
}

合并图片还可以:
//int i = maps.Length;
//if (i == 0)
// throw new Exception("图片数不能够为0");
////创建要显示的图片对象,根据参数的个数设置宽度
//Bitmap backgroudImg = new Bitmap(i * 16, 16);
//Graphics g = Graphics.FromImage(backgroudImg);
////清除画布,背景设置为白色
//g.Clear(System.Drawing.Color.White);
//g.DrawImageUnscaled(maps[0], 0, 0);
//g.DrawImageUnscaled(maps[1], maps[0].Width, 0);
//g.Dispose();
//return backgroudImg;