canvas绘制文本

##在canvas中绘制文本
canvas 提供了两种方法来渲染文本:
fillText(text, x, y)
在指定的(x,y)位置填充指定的文本
strokeText(text, x, y)
在指定的(x,y)位置绘制文本边框

                ctx.fillText("填充指定的文本",10,100);
                ctx.strokeText("绘制文本边框",10,150);

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            *{
                margin: 0;
                padding: 0;
            }
            html,body{
                height: 100%;
                overflow: hidden;
            }
            body{
                background: pink;
            }
            #test{
                background: gray;
                position: absolute;
                left: 0;
                top: 0;
                right: 0;
                bottom: 0;
                margin: auto;
            }
        </style>
    </head>
    <body>
        <canvas id="test" width="300" height="300">
            <span>您的浏览器不支持画布元素 请您换成萌萌的谷歌</span>
        </canvas>
    </body>
    <script type="text/javascript">
        window.onload=function(){
            var canvas = document.querySelector("#test");
            if(canvas.getContext){
                var ctx = canvas.getContext("2d");
                ctx.fillStyle="green"
                ctx.font="40px sans-serif"
//                在指定的(x,y)位置填充指定的文本
                ctx.fillText("填充指定的文本",10,100);
                ctx.strokeText("绘制文本边框",10,150);
            }
        }

    </script>
</html>

fillText-strokeText

###文本样式
font = value
当前我们用来绘制文本的样式. 这个字符串使用和 CSS font 属性相同的语法.
默认的字体是 10px sans-serif。
font属性在指定时,必须要有大小和字体 缺一不可

ctx.font="40px sans-serif";

textAlign = value
文本对齐选项. 可选的值包括: left, right center.

ctx.textAlign="right";

left
文本左对齐。
right
文本右对齐。
center
文本居中对齐。
这里的textAlign="center"比较特殊。textAlign的值为center时候
文本的居中是基于你在fillText的时候所给的x的值,
也就是说文本一半在x的左边,一半在x的右边

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            *{
                margin: 0;
                padding: 0;
            }
            html,body{
                height: 100%;
                overflow: hidden;
            }
            body{
                background: pink;
            }
            #test{
                background: gray;
                position: absolute;
                left: 0;
                top: 0;
                right: 0;
                bottom: 0;
                margin: auto;
            }
        </style>
    </head>
    <body>
        <canvas id="test" width="300" height="300">
            <span>您的浏览器不支持画布元素 请您换成萌萌的谷歌</span>
        </canvas>
    </body>
    <script type="text/javascript">
        window.onload=function(){
            var canvas = document.querySelector("#test");
            if(canvas.getContext){
                var ctx = canvas.getContext("2d");
                ctx.fillStyle="green";
                ctx.font="40px sans-serif";
                ctx.textAlign="right";
                ctx.fillText("大小和字体 缺一不可",300,50);
            }
        }

    </script>
</html>

textBaseline = value
描述绘制文本时,当前文本基线的属性。
top
文本基线在文本块的顶部。
middle
文本基线在文本块的中间。
bottom
文本基线在文本块的底部。

ctx.textBaseline="middle";

###measureText
measureText() 方法返回一个 TextMetrics 对象,包含关于文本尺寸的信息(例如文本的宽度)

###canvas中文本水平垂直居中

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            *{margin: 0;padding: 0;}
            body{ background:black;}
            #c1{ background:white;}
        </style>
    </head>
    <body>
        <canvas id="c1" width="400" height="400"></canvas>
    </body>
    <script type="text/javascript">
        window.onload = function(){
            var oC =document.getElementById(‘c1‘);
            var oGC = oC.getContext(‘2d‘);
            oGC.font = ‘60px impact‘;
            oGC.textBaseline = ‘middle‘;  //middle bottom
            var w = oGC.measureText(‘水平‘).width;
            oGC.fillText(‘水平居中‘,(oC.width - w)/2 , (oC.height - 60)/2);
        };
    </script>
</html>

###阴影(文本阴影&盒模型阴影)
shadowOffsetX = float
shadowOffsetX 和 shadowOffsetY 用来设定阴影在 X 和 Y 轴的延伸距离,
它们默认都为 0。
shadowOffsetY = float
shadowOffsetX 和 shadowOffsetY 用来设定阴影在 X 和 Y 轴的延伸距离,
它们默认都为 0。
shadowBlur = float
shadowBlur 用于设定阴影的模糊程度,其数值并不跟像素数量挂钩,也不受变换矩阵的影响,默认为 0。
shadowColor = color(必需项)
shadowColor 是标准的 CSS 颜色值,用于设定阴影颜色效果,默认是全透明的黑色。

            oGC.shadowOffsetX = 20;
            oGC.shadowOffsetY = 20;
            oGC.shadowBlur = 30;
            oGC.shadowColor = "yellow";

            oGC.fillRect(0,0,100,100);

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            *{margin: 0;padding: 0;}
            body{ background:black;}
            #c1{ background:white;}
        </style>
    </head>
    <body>
        <canvas id="c1" width="400" height="400"></canvas>
    </body>
    <script type="text/javascript">
        window.onload = function(){
            var oC =document.getElementById(‘c1‘);
            var oGC = oC.getContext(‘2d‘);

            //文本阴影&盒阴影
            oGC.shadowOffsetX = 20;
            oGC.shadowOffsetY = 20;
            oGC.shadowBlur = 30;
            oGC.shadowColor = "yellow";

            oGC.fillRect(0,0,100,100);
        };
    </script>
</html>

原文地址:https://www.cnblogs.com/hack-ing/p/11829408.html

时间: 2024-07-29 21:27:24

canvas绘制文本的相关文章

[ html canvas 绘制文本 ] canvas绘图实现绘制文本 strokeText fillText方法及textAlign textBaseline font 属性实例演示

1 <!DOCTYPE html> 2 <html lang='zh-cn'> 3 <head> 4 <title>Insert you title</title> 5 <meta name='description' content='this is my page'> 6 <meta name='keywords' content='keyword1,keyword2,keyword3'> 7 <meta htt

HTML5 canvas绘制文本

demo.html <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <title>绘制文字</title> <link rel="stylesheet" type="text/css" href="style.css"> <script ty

FontMetrics ----- 绘制文本,获取文本高度

Canvas 绘制文本时,使用FontMetrics对象,计算位置的坐标. 1 public static class FontMetrics { 2 /** 3 * The maximum distance above the baseline for the tallest glyph in 4 * the font at a given text size. 5 */ 6 public float top; 7 /** 8 * The recommended distance above

Android Canvas Paint绘制文本

字体有三种类型:1,内置基本字体 2,通过基本字体和样式,创建新的Typeface 3,引入外部的ttf文件. 示例代码如下: 1. package com.mike.activity; 2. 3. import android.R; 4. import android.app.Activity; 5. import android.graphics.Bitmap; 6. import android.graphics.Canvas; 7. import android.graphics.Col

HTML5 在canvas中绘制文本

作者:卿笃军 原文地址:http://blog.csdn.net/qingdujun/article/details/33333519 一.绘制文本 在绘图环境中提供了两种方法在canvas中绘制文本. strokeText(text,x,y) : 在(x,y)处绘制空心的文本. fillText(text,x,y) : (x,y)处绘制实心的文本. 二.在canvas中绘制文本 <!DOCTYPE html> <html> <head> <meta http-e

用canvas绘制的饼状图,6等分,颜色随机

都说程序员懒,生活还是不能懒的,比如洗头.洗脸,当然也包括是分享咯.下面分享一下我用H5的新标签canvas绘制的饼状图,颜色是随机生成的,动态生成6等分,我还做了随机生成数据的, 配上文字,每份所占的比例就显而意见.,这点用在分析数据还是挺好的.图片如下; canvas 是 HTML5 提供的一个用于展示绘图效果的标签. canvas 原意画布, 帆布. 在 HTML 页面中用于展示绘图效果. 最早 canvas 是苹果提出的一个方案, 今天已经在大多数浏览器中实现.. 基本使用语法: 使用

html5 canvas绘制圆形印章,以及与页面交互

1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title>HTML5 Canvas画印章</title> 6 <script type="text/javascript" src="../JQmain/jquery-2.2.0.min.js"></script> 7 &l

canvas 绘制图形

什么是canvas? <canvas> 元素用于图形的绘制,通过脚本 (通常是JavaScript)来完成. <canvas> 标签只是图形容器,您必须使用脚本来绘制图形. 方法属性 颜色.样式和阴影 属性 描述 fillStyle 设置或返回用于填充绘画的颜色.渐变或模式. strokeStyle 设置或返回用于笔触的颜色.渐变或模式. shadowColor 设置或返回用于阴影的颜色. shadowBlur 设置或返回用于阴影的模糊级别. shadowOffsetX 设置或返回

HTML5 Canvas 学习笔记(canvas绘制线条、矩形、多边形、圆形、圆环、组合图形、文字、自定义图像)

学习资源:http://www.w3school.com.cn/html5/html_5_canvas.asp   http://blog.csdn.net/clh604/article/details/8536059   http://www.jb51.net/html5/70307.html 一.对 canvas 的理解 <canvas>标签是 HTML5 中的新标签,像所有的 dom 对象一样它有自己本身的属性.方法和事件. canvas 是用来在网页上绘制图形的(我们通常称之为画布),