【发布时间】:2018-03-21 03:59:25
【问题描述】:
我有一个画布,最多可以绘制 16 个矩形。
我从服务器接收到这个二进制数:100101101(或十进制的301)。
假设我想将我的矩形与这个二进制文件相关联(每个位一个矩形),我需要为0 的每个位隐藏每个矩形(或者为1 的每个位绘制一个矩形,如你喜欢)。
所以(如果我们查看100101101)在我的画布中,我将绘制第一个矩形,然后是一个空格,然后是另外两个矩形,然后是另一个空格,等等。
我在这个问题上摸不着头脑,因为我对按位运算和位掩码真的很陌生。我认为我需要为此使用按位运算和位掩码,但也许不是......
这是我的基本代码(还没有操作我的位的功能):
//Referencing canvas
var canvas = document.getElementById("my-canvas");
var ctx = canvas.getContext("2d");
//Make Canvas fullscreen and responsive
function resize() {
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
}
window.addEventListener('resize', resize, false); resize();
//Default Y pos to center;
var yPos = canvas.height - 70;
//Default X position
var xPos = canvas.width / 2.2;
var maxRectangles = 16;
function drawAllRectangles() {
//Position, size.
var rectWidth = 70;
var rectHeigth = 25;
var dy = rectHeigth + 15;
ctx.fillStyle = "yellow";
var newPos = yPos;
var i;
for (i = 0; i < maxRectangles; i++) {
ctx.fillRect(xPos,newPos,rectWidth,rectHeigth);
newPos -= dy;
}
}
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>
【问题讨论】:
标签: javascript html canvas bit-manipulation bitwise-operators