一种文本光圈的实现方法及装置制造方法及图纸

技术编号:3941465 阅读:165 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及一种文本光圈的实现方法及装置。该实现方法包括:步骤1,构造路径对象,按照设定的字体将文本内容添加到路径对象中;步骤2,按照光圈的颜色和光圈的半径构造画笔,使用画笔绘制路径对象;步骤3,按照文本内容的颜色填充路径对象。和传统的方法对比,本发明专利技术的实现方案非常简单,效率比较高,不使用比例因子r,而且输出文本的光圈半径非常容易控制。

【技术实现步骤摘要】

本专利技术涉及文字处理领域,尤其涉及一种文本光圈的实现方法及装置
技术介绍
在电子地图和文本打印等领域,文本输出是一项重要的内容。电子地图带有文本 标识,用户可以非常清晰的识别地物,辨认方位。 可读性是评判文本输出的重要指标之一,影响文本可读性的参数是文本输出的颜 色和文本输出区域本身的颜色。如果文本的颜色和区域的颜色相差比较大,那么输出文本 的可读性就比较好,反之就比较差。考虑一种极端的情况,如果文本的颜色和区域的颜色完 全一致,那么就不会有文本输出,也就完全没有了可读性。 为了增强可读性,一般要在文本输出的区域使用和文本颜色相差比较大的颜色作 为背景色,这个背景色就是文本输出的光圈。选择合适(文本颜色和光圈颜色相差比较大 即为合适)的光圈效果,文本的可读性会大大的增强。在图l中,文本"四环"颜色为深色调 的黑色,其周围的颜色也为深色调的蓝色,由于不带光圈效果,文本输出的效果很不好。在 图2中,由于使用了浅色调的白色作为光圈的颜色,可读性要好很多。 带有光圈效果的文本输出一般有五个参数文本内容,文本字体,文本颜色,光圈 颜色,光圈半径。图3说明了这五个参数,其中光圈半径用于描述黑色绘制的文本和黄色绘 制的文本边缘之间的距离。 当前实现光圈效果的技术大多脱胎于Bob Powell的文章,这个技术方案主要利用 了图像绘制的差值算法对文本输出边界的模糊效果。当图像放大的时候,差值算法决定了 边界像素的复合模式,简单的差值算法仅仅是把一个像素作为整体渲染,而复杂的差值算 法(例如双线性差值和双三次差值)会采用反走样技术把边界像素取平均值渲染。这个技 术方案的具体步骤是 1)、创建一个位图对象,其长宽和原始绘制区域的长宽呈一个固定的比例关系 r(例如1:5); 2)、构造一个路径对象,把要输出的文本放置在里面; 3)、创建一个基于位图的绘制对象,并且按照比例关系r设定其变换矩阵; 4)、使用光圈颜色填充路径对象,为了更好的效果,还可以使用画笔绘制路径对象的边界; 5)、设定合适的差值模式,把位图对象按照比例关系r放大绘制到给定的绘制区 域内; 6)、绘制原始的文本内容,这样两次绘制的结果就会生成光圈效果。 下面是实现这个方案的C#代码 private void Form l—Paint(object sender, System. Windows. Forms. PaintEventArgs e) {3 Bitmap bm = new Bitmap(this. ClientSize. Width/5, this.ClientSize. Height/5); GraphicsPath pth = new GraphicsPath(); pth. AddString(" Text Halo" , new FontFamily(" Verdana" ) , (int)FontStyle. Regular,100, new Point(20,20) ,StringFormat. GenericTypographic); Graphics g = Graphics. Fromlmage(bm); Matrix mx = new Matrix (1. 0f/5, 0, 0, 1. 0f/5, -(1. Of/5) , -(1. Of/5)); g. SmoothingMode = SmoothingMode. AntiAlias ; g. Transform = mx ; Pen p = new Pen (Color. Yellow, 3); g. DrawPath(p, pth); g. FillPath(Brushes. Yellow, pth); g. Dispose (); e. Graphics. Transform = new Matrix(1,0,0,1,50,50); e. Graphics. SmoothingMode = SmoothingMode. AntiAlias ; e. Graph i c s. Interpo 1 at ionMode = Int erpo 1 at i onMode.HighQimlityBicubic 5 e. Graphics. Drawlmage (bm, ClientRectangle, 0, 0, bm. Width, bm. Height, Gra phicsUnit. Pixel) e. Graphics. FillPath (Brushes. Black, pth); pth. Dispose (); } 这个实现方案的主要缺点有1)这个实现方案大约有17行C#代码,比较复杂,效率也比较低;2)输入参数多,难以控制;3)比例因子r,画笔宽度(用于控制光圈半径)等 都不容易控制,光圈效果难以控制;4)对字体大小比较敏感,当使用较小字体的时候,上面 的方法效果不太理想;而在电子地图领域,小字体的使用是很常见的。
技术实现思路
为了解决上述的技术问题,本专利技术提供了一种文本光圈的实现方法及装置,其目的在于,提供更加简单、有效并易于控制的文本光圈实现方案。 本专利技术提供了一种文本光圈的实现方法,包括 步骤1,构造路径对象,按照设定的字体将文本内容添加到路径对象中; 步骤2,按照光圈的颜色和光圈的半径构造画笔,使用画笔绘制路径对象; 步骤3,按照文本内容的颜色填充路径对象。 画笔的宽度为光圈的半径的2倍。 本专利技术提供了一种文本光圈的实现装置,包括 路径对象构造模块,用于构造路径对象,并按照设定的字体将文本内容添加到路4径对象中; 画笔构造模块,用于按照光圈的颜色和光圈的半径构造画笔,并使用画笔绘制路 径对象; 颜色填充模块,用于按照文本内容的颜色填充路径对象。 画笔的宽度为光圈的半径的2倍。 本专利技术的实现方案非常简单,效率比较高,不使用比例因子r,而且输出文本的光 圈半径非常容易控制。附图说明 图1是不带光圈的文本输出示意图; 图2是带浅色光圈的文本输出示意图; 图3是光圈参数示意图; 图4是本专利技术提供的实现效果和现有技术的实现效果比较示意图; 图5是光圈半径为1个像素的实现分解过程示意图; 图6是光圈半径为4个像素的实现分解过程示意图。具体实施例方式本专利技术提出了一种新的实现光圈效果文本输出的方法,这个方法非常简单(只有 5, 6行代码),效率比较高,不使用比例因子r,而且输出文本的光圈半径非常容易控制。 图4是本专利技术提供的实现效果和现有技术的实现效果比较示意图,左边是Bob Powell所提供的方法,右边是本专利技术提供的方法。具体的参数是文本内容"伟大中国", 文本字体"微软雅黑(12pt,24pt,36pt,48pt,60pt)",文本颜色黑色,光圈颜色白色,光 圈半径1. 5pixel,2pixel,2pixel,3pixel,3pixel,pixel代表像素大小。可以看到当字体 较小的时候,本专利技术提供的方法效果更好。 文本的字形存储在字体文件中,一般存储字形的矢量信息(在这里不考虑栅格字 体)。当我们输出文本的时候,操作系统从字体文件中取出字形信息,然后以多边形的方式 填充,这样生成文本的输出。 在几乎所有的绘制引擎(GDI,GDIPLUS,Qt本文档来自技高网
...

【技术保护点】
一种文本光圈的实现方法,其特征在于,包括:步骤1,构造路径对象,按照设定的字体将文本内容添加到路径对象中;步骤2,按照光圈的颜色和光圈的半径构造画笔,使用画笔绘制路径对象;步骤3,按照文本内容的颜色填充路径对象。

【技术特征摘要】

【专利技术属性】
技术研发人员:赵红超
申请(专利权)人:中国科学院计算技术研究所
类型:发明
国别省市:11[中国|北京]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1