为何用C#在图片上写字与画线时文字与线的周围的背景部分会被糊?
为何用C#在图片上写字与画线时文字与线的周围的背景部分会被糊?
最近,一项目里,需要在图片上根据在线设计器编排的文字线条来生成新的图片。
原来这应该是很简单的事。也顺利生成了,但是,生成后一看,文字和线条边上的背景会有少许模糊化。
请看原图和生成后的图的对比:
原图放大后截图:

C#处理写字与画线后放大截图:

生成用的核心代码:
最近,一项目里,需要在图片上根据在线设计器编排的文字线条来生成新的图片。
原来这应该是很简单的事。也顺利生成了,但是,生成后一看,文字和线条边上的背景会有少许模糊化。
请看原图和生成后的图的对比:
原图放大后截图:

C#处理写字与画线后放大截图:

生成用的核心代码:
/// <summary>
/// 写文本
/// </summary>
/// <param name="oImg"></param>
/// <param name="drawObj">文本对象</param>
private void DrawText(Image oImg, DrawObject drawObj)
{
Graphics g = Graphics.FromImage(oImg);
FontFamily fm = new FontFamily(drawObj.Params["font-family"].ToString());
Font font = new Font(fm, 12, FontStyle.Regular);
g.DrawString(drawObj.V, font, new SolidBrush(Color.Black), drawObj.X, drawObj.Y);
}
/// <summary>
/// 画线条
/// </summary>
/// <param name="oImg"></param>
/// <param name="drawObj">线条对象</param>
private void DrawLine(Image oImg, DrawObject drawObj)
{
Graphics g = Graphics.FromImage(oImg);
Pen pen = new Pen(Color.Blue, drawObj.FontSize);
pen.DashStyle = DashStyle.Dash;
Point[] points = new Point[2];
if (drawObj.Params["direction"].ToString() == "h")//水平线
{
points[0] = new Point(drawObj.X, drawObj.Y + (drawObj.FontSize - 1) / 2);
points[1] = new Point(drawObj.X+drawObj.Width, drawObj.Y+(drawObj.FontSize-1)/2);
}
else//垂直线
{
points[0] = new Point(drawObj.X + (drawObj.FontSize - 1) / 2, drawObj.Y);
points[1] = new Point(drawObj.X + (drawObj.FontSize - 1) / 2, drawObj.Y + drawObj.Height);
}
g.DrawLine(pen, points[0], points[1]);
}
...全文
相关推荐
C#在图片上写字功能示例
C#在图片上写字功能示例,介绍了如何在图片上添加文字、设置文字位置、风格等等功能接口
C#实现的图片添加水印系统教程与实践
Bitmap类是.NET框架中用于处理位图图像的一个类,属于System.Drawing命名空间。它提供了丰富的接口来处理图像的像素数据,使得开发者能够加载、保存、创建和修改图像文件。Bitmap类的使用范围广泛,包括图像处理软件、图形用户界面(GUI)应用程序以及任何需要图像操作的应用。Bitmap类的内部结构非常复杂,它包括像素数据的存储、图像的元数据(如宽度、高度、颜色深度等)、以及对图像进行操作的方法等。
C#文字转透明背景图片
C#文字转透明背景图片,传人文字信息生成文字透明背景的图片
C# OCR识别 图片文字识别
c#实现OCR图片文字识别,包含图片预处理提高识别率。支持简体繁体识别
C# 新手实例:在窗体上显示图片和文字
C# 新手实例:在窗体上显示图片和文字 C#新手实例:在窗体上显示图片和文字,超简单,本来不想放出来的,不过多看些实例有好处的。


