有没有一种方法可以使用HTML Canvas和JavaScript从一个点填充到它到达边界
Is there a way to fill from a point till it hits a border using HTML Canvas and JavaScript?
我正在使用一些旧的基本代码。它是这样的:
PAINT (200, 200), 2, 10
这基本上意味着:用深绿色填充从坐标X 200 Y 200开始的区域,直到该点达到浅绿色的边界颜色,然后停止填充。
这个想法是,可以用一种颜色绘制一个轮廓(比如一个状态),然后用另一种颜色填充整个轮廓。它不会填充整个屏幕,因为轮廓是填充停止时的颜色。
您可以使用整体填充来填充区域。它以一个起始点(或种子点)作为输入,并通过尝试填充其空邻居来递归填充区域。
JavaScript中一个简单的基于堆栈的实现:
// Takes the seed point as input
var floodfill = function(point) {
var stack = Array();
stack.push(point); // Push the seed
while(stack.length > 0) {
var currPoint = stack.pop();
if(isEmpty(currPoint)) { // Check if the point is not filled
setPixel(currPoint); // Fill the point with the foreground
stack.push(currPoint.x + 1, currPoint.y); // Fill the east neighbour
stack.push(currPoint.x, currPoint.y + 1); // Fill the south neighbour
stack.push(currPoint.x - 1, currPoint.y); // Fill the west neighbour
stack.push(currPoint.x, currPoint.y - 1); // Fill the north neighbour
}
}
};
isEmpty(point)
是测试点(x, y)
是否填充有边界颜色(在这种情况下为浅绿色)的函数。
setPixel(point)
使用前景色(在您的情况下为深绿色)填充点(x, y)
。
这些函数的实现是琐碎的,我把它留给您。
上面的实现使用了一个4连通邻域。但它可以很容易地扩展到6或8个连接的社区。
相关文章:
- 在切片中填充一个 JavaScript 圆圈
- 当你有很多文本框时,如何从一个模态中只填充一个文本框
- 我如何使用jQuery来点击和选择并让它填充一个字段
- 在Node.js中用.bin文件内容填充一个类型化数组
- 使用DOM创建并填充一个带有javascript数组值的复选框列表
- 如何在猫鼬中填充一个群体
- 输入其他相关字段时填充一个字段
- 根据选择的其他下拉列表填充一个下拉列表
- 在 PHP 中填充一个月的结束日期
- jQuery:用span的值填充一个文本框
- 在需要填充一个文本字段后,在填充另一个文本域时动态执行函数
- 是的,用javascript填充一个特定的表单字段
- 用ng重复或ng模型填充一个文本区域,这样它就不会用迭代的数据一个接一个地创建新的文本区域
- 如何在jQuery-Javascript中填充一个月数数组
- Javascript或jQuery根据另一个输入值自动填充一个输入文本
- 用于在另一个datePicker上填充一个datapicker值的jQuery
- 我需要javascript自动前缀+后缀,因为它填充一个字段?我想用撇号把它括起来
- 我需要javascript前缀+后缀,因为它是填充一个字段?我想用撇号把它括起来
- 是否有可能填充一个图标的百分比
- jQuery只需要根据其他字段的值自动填充一个输入字段(行)(自动完成);所有其他字段必须保持不变