- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 measureText() 一次显示一个字符的文本,但它给了我错误的值。
我有一个绘制字符的函数 drawChar(ch)、一个上下文“ctx”和一个将字符定位在 Canvas 上的变量“光标”:
var cursor = 0;
function drawChar(ch)
{
ctx.fillStyle = "White";
ctx.font = "20px System";
var twidth = ctx.measureText(ch).width;
ctx.fillText(ch, cursor*twidth, 20);
}
我有一个全局变量“letters”,我在开头拆分它以获得一个字母字符串数组:
var letters = "ABCDEFGHIJKL";
letters = letters.split("");
我这样调用函数:
drawChar(letters[cursor++]);
它显示的字符在前 2-3 个字符处正确对齐,但随后 measureText() 返回巨大的值并且字符散布在 Canvas 上。
谢谢。
最佳答案
那是因为每个字母都有不同的宽度值。它们不能紧挨着放置。这样不行。
var canvas = document.createElement('canvas');
document.body.append(canvas);
var ctx = canvas.getContext('2d');
canvas.width = 450;
canvas.height = 100;
var cursor = 0;
function drawChar(ch) {
ctx.font = "20px System";
var twidth = ctx.measureText(ch).width;
ctx.fillText(ch, cursor * twidth, 20);
}
var letters = "ABCDEFGHIJKL";
letters = letters.split("");
for(cursor = 0; cursor < letters.length; cursor++) {
drawChar(letters[cursor]);
}
var canvas = document.createElement('canvas');
document.body.append(canvas);
var ctx = canvas.getContext('2d');
canvas.width = 450;
canvas.height = 100;
var cursor = 0;
var twidth = 15;
function drawChar(ch) {
ctx.font = "20px System";
ctx.fillText(ch, cursor * twidth, 20);
}
var letters = "ABCDEFGHIJKL";
letters = letters.split("");
for(cursor = 0; cursor < letters.length; cursor++) {
drawChar(letters[cursor]);
}
var canvas = document.createElement('canvas');
document.body.append(canvas);
var ctx = canvas.getContext('2d');
canvas.width = 450;
canvas.height = 100;
var cursor = 0;
var letters = "ABCDEFGHIJKL";
letters = letters.split("");
function drawChar(ch) {
ctx.font = "20px System";
var twidth = 0;
for(var i = 0; i < cursor; i++) {
twidth += ctx.measureText(letters[i]).width;
}
ctx.fillText(ch, twidth, 20);
}
for(cursor = 0; cursor < letters.length; cursor++) {
drawChar(letters[cursor]);
}
关于javascript - Canvas measureText() 给出错误的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43705315/
我在使用 skia measureText() 函数测量文本时遇到问题。返回值不准确。 SkPaint *skPaint = new SkPaint(); SkTypeface* myFont = S
我预计 TAB 字符会比 SPACE 字符宽,但在 HTML5 canvas 中,它们是相同的。加上其他一些,这不是那么重要: var c=document.getElementById('mycan
我有一个位图对象,我想在其上绘制一些文本。该文本应该针对给定点正确对齐。这就是我现在的做法: newBitmap = Image.FromFile(bg) as Bitmap; Graphics g
所以我使用Paint的measureText()方法来测量一段文本的宽度,但是我想根据一定的文本大小来测量文本。假设我想获得一个文本段的宽度,当它占据某个 TextView 时,它将是 20 个缩放像
嗨,我正在使用 TextRenderer.MeasureText() 方法来测量给定字体的文本宽度。我使用 Arial Unicode MS 字体来测量宽度,这是一种包含所有语言字符的 Unicode
调用 TextRenderer.MeasureText 如下: TextRenderer.MeasureText(myControl.Text, myControl.Font); 并将结果与控件的
我有一个长字符串(约 10 万个字符)。我需要知道这个字符串的长度。我叫 Size s = TextRenderer.MeasureText(graphics, text, font); 但它返回宽度
我正在使用 measureText() 一次显示一个字符的文本,但它给了我错误的值。 我有一个绘制字符的函数 drawChar(ch)、一个上下文“ctx”和一个将字符定位在 Canvas 上的变量“
我想使用 cavsTxt.measureText 找到文本元素的宽度。根据宽度,我会检查它是否从父元素溢出。我在更改字体系列及其大小时得到了不同的宽度。 cavsElem = document.cre
根据 MDN , .measureText().width “包含以 CSS 像素为单位的文本的提前宽度(该行内框的宽度)”,这意味着屏幕上的显示大小,这意味着如果我调用 .scale(2,2) 在我
Paint.measureText 对于阿拉伯语文本不准确。这是我尝试过的: 我有一个 TextView tv1。 tv1.getWidth(); 给出 480,没问题。 tv1.getPaint()
我试图在我的 TextBox 子类中绘制 80 个字符的边距。这是我的代码: class FooTextBox : TextBox { ... void UpdateMarginPos
我想我不知道要使用什么搜索词,这应该很简单...我用什么来确定字符串的宽度(以英寸为单位)。 Dim sSize As System.Drawing.SizeF Dim
编辑:最初我只检查了桌面浏览器 - 但对于移动浏览器,情况更加复杂。 我遇到了一些浏览器及其文本呈现功能的奇怪问题,我不确定是否可以采取任何措施来避免这种情况。 Android 上的 WebKit 和
我试图在 HTML Canvas 上的一串字符下画一条线,但从 measureText 返回的值是错误的。 代码如下: var theCanvas = document.querySelector(
在canvas中测量文本时,经常会看到如下代码 w = c.measureText(d.text + "m").width 来自 https://github.com/jasondavies/d3-c
我需要计算客户提供的所有文本的长度(以像素为单位)。问题是他们只提供了一种常规字体,而斜体样式必须由 Android 呈现。一个已知的 Android 错误是,对于斜体(呈现为斜体)字体,未正确计算
我想在给定一定宽度的可用 Canvas 的情况下测量文本的高度。我传递的文本很长,我知道会换行。为此,我调用以下方法: using System.Windows.Forms; ... string t
我正在使用 Paint.getTextBounds() 测量文本,因为我对获取要呈现的文本的高度和宽度感兴趣。但是,实际呈现的文本总是比 .width() 宽一点。的Rect getTextBound
如果我给 TextRenderer.MeasureText 一些要测量的文本和要使用的宽度,它将返回显示该文本所需的高度。 private static int CalculateHeight(str
我是一名优秀的程序员,十分优秀!