为何用C#在图片上写字与画线时文字与线的周围的背景部分会被糊?

李睿_Lee 李睿_Lee 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
为何用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]);
}
...全文

相关推荐

评论 10
收藏 已收藏
分享
返回顶部
李睿_Lee
.NET社区 62,272 成员 668,968 内容