在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ HTML/ Ch18 文本對齊與度量
Ch22 最后的API
Ch14 旋轉(zhuǎn)變換
Ch19 全局陰影與圖像合成
Ch12 三次貝塞爾曲線
Ch4 多線條組成圖形
Ch7 填充顏色
Ch6 線條的屬性
Ch20 裁剪和繪制圖像
CANVAS——Draw on the Web
Ch18 文本對齊與度量
Ch8 填充樣式
Ch15 縮放變換
Ch9 繪制標(biāo)準(zhǔn)圓弧
Ch2 開始前的準(zhǔn)備
Ch16 矩陣變換
Ch3 從線段開始
Ch10 使用切點繪制圓弧
Ch21 非零環(huán)繞原則
Ch11 二次貝塞爾曲線
Ch5 繪制矩形
Ch17 文本顯示與渲染
Ch1 HTML5簡介
Ch13 平移變換

Ch18 文本對齊與度量

文本對齊

水平對齊textAlign

context.textAlign="center|end|left|right|start";

其中各值及意義如下表。

描述
start 默認(rèn)。文本在指定的位置開始。
end 文本在指定的位置結(jié)束。
center 文本的中心被放置在指定的位置。
left 文本左對齊。
right 文本右對齊。

我們通過一個例子來直觀的感受一下。

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title>textAlign</title>
    <style>
        body { background: url("./images/bg3.jpg") repeat; }
        #canvas { border: 1px solid #aaaaaa; display: block; margin: 50px auto; }
    </style>
</head>
<body>
<div id="canvas-warp">
    <canvas id="canvas">
        你的瀏覽器居然不支持Canvas?!趕快換一個吧!!
    </canvas>
</div>

<script>
    window.onload = function(){
        var canvas = document.getElementById("canvas");
        canvas.width = 800;
        canvas.height = 600;
        var context = canvas.getContext("2d");
        context.fillStyle = "#FFF";
        context.fillRect(0,0,800,600);

        // 在位置 400 創(chuàng)建藍(lán)線
        context.strokeStyle="blue";
        context.moveTo(400,100);
        context.lineTo(400,500);
        context.stroke();

        context.fillStyle = "#000";
        context.font="50px Arial";

        // 顯示不同的 textAlign 值
        context.textAlign="start";
        context.fillText("textAlign=start", 400, 120);
        context.textAlign="end";
        context.fillText("textAlign=end", 400, 200);
        context.textAlign="left";
        context.fillText("textAlign=left", 400, 280);
        context.textAlign="center";
        context.fillText("textAlign=center", 400, 360);
        context.textAlign="right";
        context.fillText("textAlign=right", 400, 480);
    };
</script>
</body>
</html>

演示 18-1

運行結(jié)果:

textAlign

垂直對齊textBaseline

context.textBaseline="alphabetic|top|hanging|middle|ideographic|bottom";

其中各值及意義如下表。

描述
alphabetic 默認(rèn)。文本基線是普通的字母基線。
top 文本基線是 em 方框的頂端。
hanging 文本基線是懸掛基線。
middle 文本基線是 em 方框的正中。
ideographic 文本基線是表意基線。
bottom 文本基線是 em 方框的底端。

首先咱們通過一個圖來看一下各個基線代表的位置。 基線

我們通過一個例子來直觀的感受一下。

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title>textBaseline</title>
    <style>
        body { background: url("./images/bg3.jpg") repeat; }
        #canvas { border: 1px solid #aaaaaa; display: block; margin: 50px auto; }
    </style>
</head>
<body>
<div id="canvas-warp">
    <canvas id="canvas">
        你的瀏覽器居然不支持Canvas?!趕快換一個吧??!
    </canvas>
</div>

<script>
    window.onload = function(){
        var canvas = document.getElementById("canvas");
        canvas.width = 800;
        canvas.height = 600;
        var context = canvas.getContext("2d");
        context.fillStyle = "#FFF";
        context.fillRect(0,0,800,600);

        //在位置 y=300 繪制藍(lán)色線條
        context.strokeStyle="blue";
        context.moveTo(0,300);
        context.lineTo(800,300);
        context.stroke();

        context.fillStyle = "#00AAAA";
        context.font="20px Arial";

        //在 y=300 以不同的 textBaseline 值放置每個單詞
        context.textBaseline="top";
        context.fillText("Top",150,300);
        context.textBaseline="bottom";
        context.fillText("Bottom",250,300);
        context.textBaseline="middle";
        context.fillText("Middle",350,300);
        context.textBaseline="alphabetic";
        context.fillText("Alphabetic",450,300);
        context.textBaseline="hanging";
        context.fillText("Hanging",550,300);
    };
</script>
</body>
</html>

演示 18-2

運行結(jié)果:

textBaseline

文本度量

文本度量使用measureText()方法實現(xiàn),這個api在換行顯示判斷中會有奇效。例如之前提到的微信界面生成器,在對話的字符長度超出一定值的時候,需要換行顯示。那么,這個功能需要怎么實現(xiàn)呢?就是通過context.measureText(text).width;來實現(xiàn)判斷。其中,text是要測量的文本。

這里提供一個代碼演示一下該方法的作用,大家可以課下自行實現(xiàn)文本換行功能,這個功能是比較實用的,因為Canvas 文本API只支持單行顯示。

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title>measureText</title>
    <style>
        body { background: url("./images/bg3.jpg") repeat; }
        #canvas { border: 1px solid #aaaaaa; display: block; margin: 50px auto; }
    </style>
</head>
<body>
<div id="canvas-warp">
    <canvas id="canvas">
        你的瀏覽器居然不支持Canvas?!趕快換一個吧!!
    </canvas>
</div>

<script>
    window.onload = function(){
        var canvas = document.getElementById("canvas");
        canvas.width = 800;
        canvas.height = 600;
        var context = canvas.getContext("2d");
        context.fillStyle = "#FFF";
        context.fillRect(0,0,800,600);

        //居中顯示
        context.textAlign = "center";
        context.textBaseline = "middle";

        context.fillStyle = "#00AAAA";
        context.font="30px Arial";
        var txt="Hello Canvas";
        context.fillText("width:" + context.measureText(txt).width,400,300);
        context.fillText(txt,400,250);

    };
</script>
</body>
</html>

演示 18-3

運行結(jié)果:

measureText


至此,Canvas 文本API的內(nèi)容已經(jīng)說完了,是不是非常的簡單?,F(xiàn)在咱們已經(jīng)有了書法家和藝術(shù)家的底蘊了,接下來,咱們學(xué)一些Canvas 高級內(nèi)容API~是不是特別的激動~我們繼續(xù)前進!