我有一个画布,最多可以绘制16个矩形。为每个位绘制矩形即为1
我收到来自服务器的这个二进制数:100101101
(或301
十进制)。
假装,我想我的矩形关联到这个二进制文件(每比特一个矩形),我需要隐藏的是0
每个比特的每个矩形(或绘制一个矩形因为这是1
的每一位,只要你喜欢) 。
所以(如果我们看一下100101101
)在我的画布我会第一个矩形绘制,然后是一个空格,然后两个矩形,然后另一个空间等
我抓我的头了很多围绕这一点,因为我真的不熟悉按位操作和位掩码。我想,我需要使用位运算和位掩码这一点,但也许不是...
这是我的基本代码(无功能来操纵我的位还):
\t \t //Referencing canvas
\t \t var canvas = document.getElementById("my-canvas");
\t \t var ctx = canvas.getContext("2d");
\t \t //Make Canvas fullscreen and responsive
\t function resize() {
\t \t \t canvas.width = window.innerWidth;
\t \t \t canvas.height = window.innerHeight;
\t \t }
\t \t window.addEventListener('resize', resize, false); resize();
\t \t
\t \t
\t \t //Default Y pos to center;
\t \t var yPos = canvas.height - 70;
\t \t //Default X position
\t \t var xPos = canvas.width/2.2;
\t \t var maxRectangles = 16;
\t function drawAllRectangles() {
\t \t \t //Position, size.
\t \t \t var rectWidth = 70;
\t \t \t var rectHeigth = 25;
\t \t \t var dy = rectHeigth + 15;
\t \t \t ctx.fillStyle = "yellow";
\t \t \t
\t \t \t var newPos = yPos;
\t var i;
\t for (i = 0; i < maxRectangles; i++) {
\t ctx.fillRect(xPos,newPos,rectWidth,rectHeigth);
\t newPos -= dy;
\t }
}
\t \t drawAllRectangles();
canvas {background-color: #131217}
body { margin: 0; overflow: hidden; }
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Draw Rect from bit</title>
</head>
<body>
<canvas id="my-canvas"></canvas>
</body>
</html>
也许一个for循环将帮助? – clabe45
是的,他应该使用循环我只是给他提供线索如何访问价值作为二进制 –
谢谢@FerhatBAŞ!真的很清楚的解释,我会从那里开始! –