C#的Graphics画图关键代码
需要开发个简易图片处理软件,经过2天的研究最终选择Graphics处理图片。
思路:添加一个基础的画布控件(本例中为PictureBox)->添加图片、文字都通过这个 控件.Controls.Add 添加到该控件(注意设置下Index,否则后加入的内容是在最底层的)->点中哪个Control就设置为当前Control->保存时创建空白画布图片->循环独立控件.Controls,根据类型使用Graphics.DrawImage或者Graphics.DrawString将内容画到画布上。
关键代码如下:
Bitmap baseMap = new Bitmap(pic_Canvas.Size.Width, pic_Canvas.Size.Height); //pic_Canvas为PictureBox控价,创建了个透明空白图片
Graphics gx = Graphics.FromImage(baseMap); //通过图片创建画布,相当于PS概念中的画布上第一个图层,所以DrawImage、DrawString都是在这个图片上操作的
gx.FillRectangle( Brushes.White,pic_Canvas.ClientRectangle);//设置画布为白底,其实是画了个白色矩形
for(int i=pic_Canvas.Controls.Count-1;i>=0;i--)
{//循环将添加到pic_Canvas上的Control对象画到画布上
Control ctl = pic_Canvas.Controls[i];
if (ctl.GetType() == typeof(PictureBox))
{//如果是图片
PictureBox pic = (PictureBox)ctl;
Bitmap bit = new Bitmap(pic.Image);
gx.DrawImage(bit, pic.Location.X, pic.Location.Y);
}
else if (ctl.GetType() == typeof(TextBox))
{//如果是文本框
TextBox txt = (TextBox)ctl;
gx.DrawString(txt.Text, txt.Font, Brushes.Black, txt.Location.X, txt.Location.Y);
}
}
baseMap.Save(filename, format); //保存,filename是包含文件名的完整路径,format是ImageFormat