文字定位源码

简介: 文字定位源码

源码:

<!DOCTYPE html>
<!--
    Author:苏一恒
    Date:2019/10/9 14:10
    Motto:
        The best time to plant trees is ten years ago, followed by now. 
        种树最好的时间是十年前,其次是现在。
 -->
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>文字定位</title>
    <style>
        body {
            background: #eeeeee;
        }
 
        #canvas {
            background: #ffffff;
            margin-top: 5px;
            margin-left: 10px;
            -webkit-box-shadow: 4px 4px 8px rgba(0, 0, 0, 0.5);
            -moz-box-shadow: 4px 4px 8px rgba(0, 0, 0, 0.5);
            box-shadow: 4px 4px 8px rgba(0, 0, 0, 0.5);
            border: 1px solid rgba(0, 0, 0, 0.2);
        }
    </style>
</head>
<body>
<canvas id='canvas' width='780' height='440'>canvas not supports</canvas>
 
<script>
    'use strict';
 
    let canvas = document.getElementById('canvas'),
        context = canvas.getContext('2d'),
        fontHeight = 24,
        alignValues = ['start','center','end'],
        baseLineValue = ['top','middle','bottom','alphabetic', 'ideographic', 'hanging'],
        x,y;
 
    //Function……
 
    let drawGrid=(color, stepx, stepy)=> {
        context.save();
 
        context.strokeStyle = color;
        context.fillStyle = '#ffffff';
        context.lineWidth = 0.5;
        context.fillRect(0, 0, context.canvas.width, context.canvas.height);
 
        for (let i = stepx + 0.5; i < context.canvas.width; i += stepx) {
            context.beginPath();
            context.moveTo(i, 0);
            context.lineTo(i, context.canvas.height);
            context.stroke();
        }
 
        for (let i = stepy + 0.5; i < context.canvas.height; i += stepy) {
            context.beginPath();
            context.moveTo(0, i);
            context.lineTo(context.canvas.width, i);
            context.stroke();
        }
 
        context.restore();
    };
 
    /**
     * 绘制(x,y)的标记点
     */
    let drawTextMarker=()=>{
      context.fillStyle='yellow';
      context.fillRect(x,y,7,7);
      context.strokeRect(x,y,7,7);
    };
 
    /**
     * 绘制文本
     * @param text
     * @param textAlign
     * @param textBaseLine
     */
    let drawText=(text,textAlign,textBaseLine)=>{
        if (textAlign)context.textAlign = textAlign;
        if (textBaseLine)context.textBaseline=textBaseLine;
 
        context.fillStyle='cornflowerblue';
        context.fillText(text,x,y);
    };
 
    /**
     * 绘制文本的线
     */
    let drawTextLine=()=>{
        context.strokeStyle='gray';
 
        context.beginPath();
        context.moveTo(x,y);
        context.lineTo(x+738,y);
        context.stroke();
    };
 
 
    //Init……
    context.font='oblique normal bold 24px palatino';
 
    drawGrid('lightgray',10,10);
 
    for (let align = 0;align<alignValues.length;++align){
        for (let baseline = 0;baseline<baseLineValue.length;baseline++){
            x= 20+align*fontHeight*15;
            y=20+baseline*fontHeight*3;
 
            drawText(alignValues[align]+'/'+baseLineValue[baseline],alignValues[align],baseLineValue[baseline]);
            drawTextMarker();
            drawTextLine();
        }
    }
 
</script>
</body>
</html>
相关文章
好的设计,文本-------------------字体嵌入,图形化管理技术,当你搜索,或者关注某个具体的地方,可以引入一种使用图形进行外标,比如方框,以更快找到该内容
好的设计,文本-------------------字体嵌入,图形化管理技术,当你搜索,或者关注某个具体的地方,可以引入一种使用图形进行外标,比如方框,以更快找到该内容
CKEditor5 支持 WPS 贴贴文字图片,默认贴贴进入空白空格
CKEditor5 支持 WPS 贴贴文字图片,默认贴贴进入空白空格
381 0
搜索和替换PPT里面指定字体文字的(某些字体无法随演示文稿一起保存)解决方案
搜索和替换PPT里面指定字体文字的(某些字体无法随演示文稿一起保存)解决方案
184 0
|
前端开发 JavaScript
前端——把一大段文字显示在前端并且有文字下面有虚线
前端——把一大段文字显示在前端并且有文字下面有虚线
|
Web App开发 文字识别 JavaScript
强大的实况文本功能,直接复制图片上的文字(macOS)
用OCR软件,是很多人的选择。我曾经也给大家推荐过“天若OCR”软件,还有朋友在用吗?
383 0
|
定位技术
百度标注地图markers图片icon不正常显示的样式冲突解决方案
百度标注地图markers图片icon不正常显示的样式冲突解决方案
182 0
|
Java
全网首发:JDK绘制文字:六、字符对应的字体图像加载流程
全网首发:JDK绘制文字:六、字符对应的字体图像加载流程
100 0
|
移动开发 前端开发 小程序
【笔记】纯css实现列表水平滑动(图片或文字内容不限)
纯css实现列表水平滑动(图片或文字内容不限)
310 0
|
前端开发 JavaScript 容器
分享个小案例-Fixed定位的框选功能
最近项目涉及到一个支持批量操作的小需求,交互上需要使用框选来触发。在查阅了一些资料后发现,网上的方案基本都是基于绝对定位布局的,此方案如果是针对全局(在body上)的框选,还是可用的。但是现实需求里几乎都是针对某个区域的框选。如果用绝对定位实现就比较繁琐了,需要调整定位原点。下面介绍一种基于Fixed定位的框选实现。
170 0
分享个小案例-Fixed定位的框选功能