添加文字的实现我个人认为是不涉及到对像素的处理的,也就是说没有像之前四个图像处理的例子那样,利用同样的原理去实现。而对于添加文字那里,主要是通过利用平时经常接触到的设置文字样式对话框来完成其中的一部分。算了,还是贴上代码会更有灵感去写东西,我已经开始觉得自己在语无伦次了。
在图片中添加文字,用户所面对的过程就是,先在一个TextBox控件里面填写想要添加的文字,再利用一个Button控件来设置一下文字的样式,最后点击图片想加入文字的地方,基本的流程就是这样。
好了,对于一个程序员来说,就要先利用一个TextBox和一个Button控件,在Button的事件里添加类似的代码,
fontDialog.ShowColor = true;//显示颜色选择对话框
if (this.fontDialog.ShowDialog() == DialogResult.OK)
{//当设置好了字体的某些属性之后
textBox.Font = fontDialog.Font;//设置文字字体
textBox.ForeColor = fontDialog.Color;//设置文字的字体颜色
}
这样就算是完成了字体设置的部分,当设置完之后,TextBox里面的文字就是你所设置了的样式的文字了。
接下来就是通过触发鼠标的MouseUp事件来完成添加文字的操作,实现代码类似如下,
/// <summary>
/// 在图片中添加文字
/// </summary>
private void pictureBox_MouseUp(object sender, MouseEventArgs e)
{
if (this.pictureBox.Image.Width < 1)
{//基本的判断还是要的
return;
}
Graphics gra = Graphics.FromImage(this.pictureBox.Image);//要进行处理的图片对象
SolidBrush brush = new SolidBrush(this.textBox.ForeColor);//初始化画笔
gra.DrawString(this.textBox.Text, this.textBox.Font, brush, e.X, e.Y);//处理图片
this.pictureBox.Refresh();//对显示图片的容器里面的内容进行刷新,以便及时显示添加的文字
}
原理就差不多就这些了,这些代码是我程序里面的部分源代码,所以是没有经过测试的,不过应该是没有什么问题的,除了少加了命名空间外,图像处理的代码通常都是要添加using System.Drawing;的。