首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么jCanvas画错了像素?

为什么jCanvas画错了像素?
EN

Stack Overflow用户
提问于 2013-04-06 16:13:16
回答 1查看 149关注 0票数 2

我有一个像素映射对象,每一行包含一个列对象,其中包含一个颜色信息。然后我用switch()选择颜色,然后简单地把它画到画布上。以下是代码:

代码语言:javascript
复制
  for(var pixX in pixmap) {
    for(var pixY in pixmap[pixX]) {
      switch(pixmap[pixX][pixY]) {
        case 1: var pixColor='lightgray'; break;
        case 2: var pixColor='black'; break;
        default: var pixColor='forestgreen'; break;
        }
      $('canvas#surface').drawRect({
        fillStyle: pixColor,
        width: 1, height: 1,
        x: pixX, y: pixY,
        fromCenter: false
        });
      }
    }

它绘制像素,但像素位置以某种方式放大,尽管像素实际上只有1 1px大。我无法确定它放大了多少。当我在画布上画一段时间后,位置是正确的。有什么问题吗?

编辑:我在jsFiddle:http://jsfiddle.net/qyNTn/上重新创建了它

EN

回答 1

Stack Overflow用户

发布于 2013-08-24 21:17:09

简单地说,pixXpixY变量由JavaScript转换为字符串。在将pixXpixY传递给jCanvas之前,需要将它们转换为数字。

原因是因为JavaScript将每个键名(任何对象)存储为字符串。因此,当您使用for in循环迭代一个对象时,键名始终是一个字符串。换句话说,pixXpixY被视为字符串,因此需要使用parseFloat等函数将它们转换为数字。

此外,jCanvas在绘制形状时会执行许多数值计算,因此对于任何数值,它总是倾向于在字符串上使用数字。

无论如何,修复代码(以产生预期的行为)只需要对drawRect()参数进行一次更改。

代码语言:javascript
复制
x: parseFloat(pixX), y: parseFloat(pixY),
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15853082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档