日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

canvas笔记-文本水平垂直对齐与度量

發布時間:2025/3/15 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 canvas笔记-文本水平垂直对齐与度量 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在canvas中通過textAlign可以設置文本的對齊:

其中left為左對齊,center為居中對齊,right為右對齊。

程序運行截圖如下:

源碼如下:

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title> </head> <body><canvas id="canvas" style="border: 1px solid #aaa; display: block; margin: 50px auto;">當前瀏覽器不支持canvas </canvas><script>window.onload = function(){let canvas = document.getElementById("canvas");canvas.width = 800;canvas.height = 800;let context = canvas.getContext("2d");context.fillStyle = "#058";context.font = "bold 40px sans-serif";context.textAlign = "left";context.fillText("textAlign = left", 400, 100);context.textAlign = "center";context.fillText("textAlign = left", 400, 200);context.textAlign = "right";context.fillText("textAlign = left", 400, 300);//baselinecontext.strokeStyle = "#888";context.moveTo(400, 0);context.lineTo(400, 800);context.stroke();}</script></body> </html>

?

?

上面是指水平對齊,下面記錄下垂直對齊

通過調用textbaseline函數進行垂直對齊,其中top為向上對齊,middle為居中對齊,bottom為底部對齊,默認情況下是alphabetic,還有2給參數一個是ideographic為中文,hanging為印度文的。

下面簡單記錄下。

程序運行截圖如下:

源碼如下:

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title> </head> <body><canvas id="canvas" style="border: 1px solid #aaa; display: block; margin: 50px auto;">當前瀏覽器不支持canvas </canvas><script>window.onload = function(){let canvas = document.getElementById("canvas");canvas.width = 800;canvas.height = 800;let context = canvas.getContext("2d");context.fillStyle = "#058";context.font = "bold 40px sans-serif";context.textBaseline = "top";context.fillText("中文ABC12345@!#@¥%%%*&", 40, 100);drawBaseline(context, 100);context.textBaseline = "middle";context.fillText("中文ABC12345@!#@¥%%%*&", 40, 200);drawBaseline(context, 200);context.textBaseline = "bottom";context.fillText("中文ABC12345@!#@¥%%%*&", 40, 300);drawBaseline(context, 300);context.textBaseline = "ideographic";context.fillText("中文ABC12345@!#@¥%%%*&", 40, 400);drawBaseline(context, 400);context.textBaseline = "hanging";context.fillText("中文ABC12345@!#@¥%%%*&", 40, 500);drawBaseline(context, 500);}function drawBaseline(cxt, h){let width = cxt.canvas.width;cxt.save();cxt.strokeStyle = "#899";cxt.lineWidth = 2;cxt.moveTo(0, h);cxt.lineTo(width, h);cxt.stroke();cxt.restore();}</script></body> </html>

?

?

?

下面是文本的度量

再canvas中通過measureText(string).width可以獲取其長度。

程序運行截圖如下:

源碼如下:

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title> </head> <body><canvas id="canvas" style="border: 1px solid #aaa; display: block; margin: 50px auto;">當前瀏覽器不支持canvas </canvas><script>window.onload = function(){let canvas = document.getElementById("canvas");canvas.width = 800;canvas.height = 800;let context = canvas.getContext("2d");context.fillStyle = "#058";context.font = "bold 40px sans-serif";let stringValue = "中文ABC12345@!#@¥%%%*&";context.fillText(stringValue, 40, 100);let textWidth = context.measureText(stringValue).width;context.fillText("字符串寬度為:" + textWidth + "px", 40, 200);}</script></body> </html>

?

?

總結

以上是生活随笔為你收集整理的canvas笔记-文本水平垂直对齐与度量的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。