- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在寻找一种在 HTML5 Canvas 中呈现带有黑色边框的白色文本的方法。我没有找到获得漂亮结果的解决方案,尝试了一些不同的方法(阴影、strokeText 等),结果总是很差(可能是由于 AA)。
这里是我要复制的基础:
你可以在这里看到我的测试:http://jsfiddle.net/7H79m/
ctx.font = "12px Arial";
ctx.textBaseline = "top";
ctx.fillStyle = "white";
ctx.strokeStyle = "black";
ctx.lineWidth = 2;
ctx.strokeText( "HappyEnd", x, y );
ctx.fillText( "HappyEnd", x, y );
如果您知道解决方案,请分享! :)
最佳答案
您将无法通过文本的内置笔划效果获得准确的结果,因为由于子像素化问题,目前在各种浏览器中的文本呈现有点马马虎虎(IMO)(请参阅Chrome 与 FF)。
但是您可以用这种方式模拟笔画(在 FF21 中渲染):
//Force anti-alias
ctx.translate(0.5, 0.5);
//...
//Create stroke effect:
ctx.fillStyle = "black";
ctx.fillText( "HappyEnd", x-1, y );
ctx.fillText( "HappyEnd", x, y-1 );
ctx.fillText( "HappyEnd", x+1, y );
ctx.fillText( "HappyEnd", x, y+1 );
//draw normal text
ctx.fillStyle = "white";
ctx.fillText( "HappyEnd", x, y );
完整修改,click here .
当然,您始终可以将“大纲”合并到函数中:
function outlineText(ctx, color, txt, x, y) {
ctx.fillStyle = color;
ctx.fillText( txt, x-1, y );
ctx.fillText( txt, x, y-1 );
ctx.fillText( txt, x+1, y );
ctx.fillText( txt, x, y+1 );
}
或者改为扩展 Canvas 上下文:
if (CanvasRenderingContext2D != 'undefined') {
CanvasRenderingContext2D.prototype.outlineText =
function outlineText(txt, x, y) {
this.fillText( txt, x-1, y );
this.fillText( txt, x, y-1 );
this.fillText( txt, x+1, y );
this.fillText( txt, x, y+1 );
}
}
用法:
ctx.outlineText("HappyEnd", x, y);
查看使用实例 incorporated in your example here .
关于javascript - HTML5 Canvas 和丑陋的文字边框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15866354/
kable(head(mtcars) %>% kable_styling(bootstrap_options = c("striped", "hover")) 使用 kable 表(见上文)的普通
我试图很好地显示 NSTextView 中突出显示的段落。现在,我通过创建一个带有背景颜色的 NSAttributedString 来做到这一点。这是一些简化的代码: NSDictionary *at
我的站点位于 http://www.idataresearch.net 我正在为导航菜单使用 Dynamic Drive 的 ddmoothmenu 脚本。我真的很喜欢这个脚本,很高兴看到以前的开发人
我在 Ubuntu EC2 实例上运行 nginx、gunicorn、django。整个网站运行良好。除了管理员。管理员无法正常显示。我运行“python manage.py Collectstati
在一个本身嵌套在一个或多个父数组/结构/union 中的数组/结构/union 中读取多个数字/字符串的最佳方法是什么? 没有临时变量的第一个例子: printf("%d %d\n", a[9][3]
我正在编写一个与 mingw 一起使用的包装层,它为应用程序提供了一个虚拟的 UTF-8 环境。处理文件名的函数是从 UTF-8 转换并调用相应的“_w”函数等的包装器。我遇到的最大问题是 Windo
在我的回答中Clojure For Comprehension example我有一个处理自己输出的函数: (defn stream [seed] (defn helper [slow]
我使用的是 bootstrap 4.0 alpha,没有其他样式。布局非常丑陋,日历只显示一列而不是表格。知道为什么以及如何做吗? 我从网站上注意到以下内容,但我不明白我应该怎么做: note: Th
我是一名优秀的程序员,十分优秀!