- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建一个简单的 Canvas 网格,它将适合玩家当前的缩放级别,但也适合特定的 Canvas 高度/宽度比例屏幕限制。这是我到目前为止得到的:
JS:
var bw = window.innerWidth / 2; //canvas size before padding
var bh = window.innerHeight / 1.3; //canvas size before padding
//padding around grid, h and w
var pW = 30;
var pH = 2;
var lLimit = 0; //9 line limit for both height and width to create 8x8
//size of canvas - it will consist the padding around the grid from all sides + the grid itself. it's a total sum
var cw = bw + pW;
var ch = bh + pH;
var canvas = $('<canvas/>').attr({width: cw, height: ch}).appendTo('body');
var context = canvas.get(0).getContext("2d");
function drawBoard(){
for (var x = 0; lLimit <= 8; x += bw / 8) { //handling the height grid
context.moveTo(x, 0);
context.lineTo(x, bh);
lLimit++;
}
for (var x = 0; lLimit <= 17; x += bh / 8) { //handling the width grid
context.moveTo(0, x); //begin the line at this cord
context.lineTo(bw, x); //end the line at this cord
lLimit++;
}
//context.lineWidth = 0.5; what should I put here?
context.strokeStyle = "black";
context.stroke();
}
drawBoard();
现在,我成功地使 Canvas 对于每个屏幕分辨率缩放级别都处于相同的比例级别。这是我想要实现的目标的一部分。我还尝试实现细线,在所有不同的缩放级别下看起来都一样,当然还要消除模糊。现在的厚度的线条根据缩放级别而变化,有时会变得模糊。
这是 jsFiddle(尽管 jsFiddle 窗口本身很小,所以您几乎不会注意到其中的区别):
https://jsfiddle.net/wL60jo5n/
帮助将不胜感激。
最佳答案
为防止模糊,您应该考虑 window.devicePixelRatio
在设置 canvas
元素的尺寸时(当然,在随后的绘制过程中考虑该尺寸)。
canvas
元素的
width
和 height
属性包含的值应按比例高于同名 CSS 属性中的值。这可以表示为例如作为以下功能:
function setCanvasSize(canvas, width, height) {
var ratio = window.devicePixelRatio,
style = canvas.style;
style.width = '' + (width / ratio) + 'px';
style.height = '' + (height / ratio) + 'px';
canvas.width = width;
canvas.height = height;
}
关于javascript - Canvas 网格在不同的缩放级别变得模糊,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38746737/
我在 android 代码中使用 asmack XMPP。我可以正常登录 XMPP 服务器,但是当我尝试创建新用户时出现问题。我想要实现的是: 以管理员身份登录。 创建一个新用户。 从管理员注销。 以
这是我的标记页面,其中有一个按钮可以从数据库中搜索数据并显示在网格中 这是我背后的代码 if (!IsPostBack) { LblInfo.Text = "Page Load
当我多次将相同的 float 值插入到我的集合中时,本应花费恒定时间的 x in s 检查变得非常慢。为什么? 时序x in s的输出: 0.06 microseconds 0.09 mi
我有一个小型聊天客户端,可以将所有历史记录存储在 sqlite 数据库中。当用户单击我的应用程序中的 history 选项卡时,我的应用程序会获取所有相关历史记录并将其显示在 QWebView 中。我
我是一名优秀的程序员,十分优秀!