• 2019年12月3日

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

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注