zoukankan      html  css  js  c++  java
  • 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>
    View Code



    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>
    View Code



    ###阴影(文本阴影&盒模型阴影)
    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>
    View Code
  • 相关阅读:
    【318】C# 学习笔记
    【317】python 指定浏览器打开网页 / 文件
    【316】python.requests 读取网页信息
    【315】Windows 之间代码自动传文件
    多线程经典问题-----乘客做公交车问题解答3
    VS2013/2012 下无法打开 源 文件“stdafx.h”的解决方法
    [课堂实践与项目]手机QQ客户端--4期(SQLite的加入,注册,找回,登录界面的修改):建立关于QQ注册类,使用SQLite进行存储,
    《Effective C++》学习笔记条款13 以对象管理资源
    抛弃编程语言的偏见——对话百度架构师
    IOS开发之UINavigationBar
  • 原文地址:https://www.cnblogs.com/hack-ing/p/11829408.html
Copyright © 2011-2022 走看看