【GDI+】 线段 文字 定位的问题
遇到一个看起来很简单的问题:
给定两个点,和一组文字,希望文字显示在线的附近并且居中显示。期望像这样的效果
进一步的抽象是:
1、根据文字的长度和高度,以及两个点,来获得文字的定位点(左上角点)的
2、让文字沿着线的方向
关键点分析:
1、点的位置通过向量平移的方式来获得
2、文字沿着线的方向,需要通过矩阵变化来进行
假定点的方向为逆时针方向,可以简单的进行分类:
①类:向左(线段方向,起点 + 文字长度一半 + 线段长度一半)、向上(线段方向旋转90度,文字高度);
②类:向右(线段方向,起点 + 文字长度一半 - 线段长度一半)、向下(线段方向旋转90度,0)
③类:向下(线段方向,起点 + 文字长度一半 + 线段长度一半)、向左(线段方向旋转90度,文字高度)
④类:向上(线段方向,起点 + 文字长度一半 - 线段长度一半)、向右(线段方向旋转90度,0)
假定文字的初始方向为水平的从左到右,可以简单的进行分类:
①类:不旋转
②类:不旋转
③类:逆时针旋转90度
④类:逆时针旋转90度
其他方向,待续~
【GDI+】 线段 文字 定位的问题的更多相关文章
- 【GDI+】 线段 文字 定位的问题(二)
继续: 经过上文的分析,似乎可以得到类似这样的想法: 由此 分为左右两侧进行区分绘制,应该就可以获得想要的结果了~
- EasyPR--开发详解(8)文字定位
今天我们来介绍车牌定位中的一种新方法--文字定位方法(MSER),包括其主要设计思想与实现.接着我们会介绍一下EasyPR v1.5-beta版本中带来的几项改动. 一. 文字定位法 在EasyPR前 ...
- OCR技术浅探 : 文字定位和文本切割(2)
文字定位 经过前面的特征提取,我们已经较好地提取了图像的文本特征,下面进行文字定位. 主要过程分两步: 1.邻近搜索,目的是圈出单行文字: 2.文本切割,目的是将单行文本切割为单字. 邻近搜索 我们可 ...
- Delphi利用Windows GDI实现文字倾斜
Delphi利用Windows GDI实现文字倾斜 摘要 Delphi利用Windows GDI实现文字倾斜 procedure TForm1.FormPaint(Sender: TObject);v ...
- 【OCR技术系列之二】文字定位与切割
要做文字识别,第一步要考虑的就是怎么将每一个字符从图片中切割下来,然后才可以送入我们设计好的模型进行字符识别.现在就以下面这张图片为例,说一说最一般的字符切割的步骤是哪些. 当然,我们实际上要识别的图 ...
- UpdateLayeredWindow后,使用Gdi DrawText文字透明的解决办法
来源:http://stackoverflow.com/questions/5309914/updatelayeredwindow-and-drawtext 要点就是在先在memDc DrawText ...
- GDI 线段绘制示例程序
#include <windows.h> #include <strsafe.h> #include <stack> typedef struct tagLINE ...
- 如何基于纯GDI实现alpha通道的矢量和文字绘制
今天有人在QQ群里问GDI能不能支持带alpha通道的线条绘制? 大家的答案当然是否定的,很多人推荐用GDI+. 一个基本的图形引擎要包括几个方面的支持:位图绘制,文字绘制,矢量绘制(如矩形,线条). ...
- VB6 GDI+ 入门教程[4] 文字绘制
http://vistaswx.com/blog/article/category/tutorial/page/2 VB6 GDI+ 入门教程[4] 文字绘制 2009 年 6 月 18 日 7条评论 ...
随机推荐
- [LeetCode]题解(python):074-Search a 2D Matrix
题目来源 https://leetcode.com/problems/search-a-2d-matrix/ Write an efficient algorithm that searches fo ...
- li有无缩略图样式调取
<div class="part3list">[field:array runphp='yes']@me = (strpos(@me['litpic'],'defaul ...
- Python处理时间 time && datetime 模块
Python处理时间 time && datetime 模块 个人整理,获取时间方式: import datetime import time #获取当前时间:Thu Nov 03 ...
- Ionic学习笔记四 一些问题处理
版权声明:本文为博主原创文章,转载请留链接,非常感谢. 目录(?)[+] IONIC actionsheet 的cancel menu在android下不显示的bug 在 _action-sh ...
- 还原SQLServer2008数据库报用户无法登录 .
在一台新的服务器上还原mssql2008r2数据库后,原来数据库中的账户无法用来打开这台新还原的数据库,报错:登录失败 错误代码:4064. 分析原因:在备份数据库的时候,服务器引擎中的安全-> ...
- EF Code First教程-02 约定配置
示例: public class Phone { [Key] //主键 public int Id { get; set; } [Required] //不能为空 [MinLength(),MaxLe ...
- 8、JavaScript深入浅出——数据类型
一.六种数据类型 Javascript是弱类型. 五种原始类型和一种对象类型: number String boolean null undefined Object 二.隐式转换 +与-的运算举例: ...
- Azure Reserved IP
Azure PowerShell > Add-AzureAccount> Select-AzureSubscription "SubscriptionName"> ...
- 浅谈My SQL引擎的对比
MySQL数 据库引擎取决于MySQL在安装的时候是如何被编译的.要添加一个新的引擎,就必须重新编译MYSQL.在缺省情况下,MYSQL支持三个引擎:ISAM.MYISAM和HEAP.另外两种类型IN ...
- MVC4相关Razor语法以及Form表单
Razor的布局(Layout) 默认建的工程都自带的了一个_ViewStart.cshtml文件,文件里面的代码如下: @{ Layout = "~/Views/Shared/_Layou ...