0
大家好,我已經盡力編寫一個腳本來檢查字符串的寬度,如果它大於某個值,請降低字體大小並再次繪製它。除了這是行不通的。一旦我最初繪製文本,它就不會更新到正確的字體大小。它只是保持原來的樣子,從來沒有讓腳本陷入無限循環。這裏是我的代碼:在HTML畫布中檢查字符串的寬度
var nFontSize = 25;
var draw_name = function(text) {
var c=document.getElementById("badgeCanvas");
var ctx=c.getContext("2d");
ctx.font="nFontSize OpenSansBold";
ctx.fillStyle = "#000000";
ctx.fillText(text,80,25);
var metrics = ctx.measureText(text);
var width = metrics.width;
while (width > 200) {
nFontSize--;
ctx.font="nFontSize OpenSansBold";
ctx.fillText(text,80,25);
metrics = ctx.measureText(text);
width = metrics.width;
}
ctx.font="nFontSize OpenSansBold";
ctx.fillStyle = "#000000";
ctx.fillText(text,80,25);
這是我在css中導入的字體,這個答案仍然適用嗎? – Twisterz
非常感謝,這是完美的。 – Twisterz
對不起,它不是字體,而是您用來設置ctx.font屬性的字符串。 「nFontsize OpenSansBold」是一個字符串。 – Ceres