遇到一个看起来很简单的问题:

给定两个点,和一组文字,希望文字显示在线的附近并且居中显示。期望像这样的效果

进一步的抽象是:

1、根据文字的长度和高度,以及两个点,来获得文字的定位点(左上角点)的

2、让文字沿着线的方向

关键点分析:

1、点的位置通过向量平移的方式来获得

2、文字沿着线的方向,需要通过矩阵变化来进行

假定点的方向为逆时针方向,可以简单的进行分类:

①类:向左(线段方向,起点 + 文字长度一半 + 线段长度一半)、向上(线段方向旋转90度,文字高度);

②类:向右(线段方向,起点 + 文字长度一半 - 线段长度一半)、向下(线段方向旋转90度,0)

③类:向下(线段方向,起点 + 文字长度一半 + 线段长度一半)、向左(线段方向旋转90度,文字高度)

④类:向上(线段方向,起点 + 文字长度一半 - 线段长度一半)、向右(线段方向旋转90度,0)

假定文字的初始方向为水平的从左到右,可以简单的进行分类:

①类:不旋转

②类:不旋转

③类:逆时针旋转90度

④类:逆时针旋转90度

其他方向,待续~

【GDI+】 线段 文字 定位的问题的更多相关文章

  1. 【GDI+】 线段 文字 定位的问题(二)

    继续: 经过上文的分析,似乎可以得到类似这样的想法: 由此 分为左右两侧进行区分绘制,应该就可以获得想要的结果了~

  2. EasyPR--开发详解(8)文字定位

    今天我们来介绍车牌定位中的一种新方法--文字定位方法(MSER),包括其主要设计思想与实现.接着我们会介绍一下EasyPR v1.5-beta版本中带来的几项改动. 一. 文字定位法 在EasyPR前 ...

  3. OCR技术浅探 : 文字定位和文本切割(2)

    文字定位 经过前面的特征提取,我们已经较好地提取了图像的文本特征,下面进行文字定位. 主要过程分两步: 1.邻近搜索,目的是圈出单行文字: 2.文本切割,目的是将单行文本切割为单字. 邻近搜索 我们可 ...

  4. Delphi利用Windows GDI实现文字倾斜

    Delphi利用Windows GDI实现文字倾斜 摘要 Delphi利用Windows GDI实现文字倾斜 procedure TForm1.FormPaint(Sender: TObject);v ...

  5. 【OCR技术系列之二】文字定位与切割

    要做文字识别,第一步要考虑的就是怎么将每一个字符从图片中切割下来,然后才可以送入我们设计好的模型进行字符识别.现在就以下面这张图片为例,说一说最一般的字符切割的步骤是哪些. 当然,我们实际上要识别的图 ...

  6. UpdateLayeredWindow后,使用Gdi DrawText文字透明的解决办法

    来源:http://stackoverflow.com/questions/5309914/updatelayeredwindow-and-drawtext 要点就是在先在memDc DrawText ...

  7. GDI 线段绘制示例程序

    #include <windows.h> #include <strsafe.h> #include <stack> typedef struct tagLINE ...

  8. 如何基于纯GDI实现alpha通道的矢量和文字绘制

    今天有人在QQ群里问GDI能不能支持带alpha通道的线条绘制? 大家的答案当然是否定的,很多人推荐用GDI+. 一个基本的图形引擎要包括几个方面的支持:位图绘制,文字绘制,矢量绘制(如矩形,线条). ...

  9. VB6 GDI+ 入门教程[4] 文字绘制

    http://vistaswx.com/blog/article/category/tutorial/page/2 VB6 GDI+ 入门教程[4] 文字绘制 2009 年 6 月 18 日 7条评论 ...

随机推荐

  1. JS位操作符

    1.按位与 AND & var result = 25 & 3; alert(result); //1var result2 = 25 & -3;alert(result2); ...

  2. SqlServer2008R2 修改表中列为自增列

    选定列,修改列属性标识规范中(是标识)为是,标识增量为1,标识种子为1 SQL语句:alter table 表名 add 列名 int IDENTITY(1,1) NOT NULL

  3. cannot open /proc/bus/usb/devices, No such file or directory

    由于kernel config中没有打开对应的配置. make menuconfig 选择: Device Drivers ---> [*] USB support ---> [*] US ...

  4. 查看CentOS上Apache位置,版本,停止,启动

    查看Apache是否被安装: [root@asg11 ~]# find / -name 'httpd'/etc/sysconfig/httpd/etc/httpd/etc/logrotate.d/ht ...

  5. SQLServer temporary table and table variable

    Temporary tables are created in tempdb.  The name "temporary" is slightly misleading, for ...

  6. 表单设置line-height,在ff中的不垂直居中问题???

    在ff中有时候input中的line-height,是有bug存在的,设置了line-height,发现文字并不是垂直居中. 1.这是正常现象,不需要刻意调整样式 2.以后尽量使用button,来避免 ...

  7. ucenter 通信成功后 apps.php无误后 该做的事

    比如你的系统有个登陆功能,在本系统登陆之前要先执行如下代码,先把apps.php里的所有站点先登陆一遍 <meta charset="utf8"> <?php i ...

  8. OpenGIS Simple feature access

    OGIS规范定义的几何对象定义 Curve:A Curve is a 1-dimensional geometric object usually stored as a sequence of Po ...

  9. psycopg2

    简介 Psycopg 是Python语言的PostgreSQL数据库接口. 它的主要优势在于完全支持Python DB API 2.0,以及安全的多线程支持.它适用于随时创建.销毁大量游标的.和产生大 ...

  10. Jquery判断离开页面时,通过Ajax更新数据(兼容IE,Chrome,FF浏览器)

    现在很多项目都有客户离开网页时,处理一些业务的需求.所以焦点就聚集在了如何获取页面离开事件. 以下是本人在一个项目中需要记录页面浏览时长的处理办法,测试兼容IE,Chrome,FF浏览器 代码如下: ...