Subimage模式在HTML平台上绘制黑色

时间:2013-12-26 15:25:17

标签: playn

我正在使用PlayN 1.8

我加载了一个图像精灵,在成功回调时,我从原始图像中提取了一个子图像。

Image patternImage = result.subImage(0f, 0f, 10f, 10f);

然后我创建了我想要显示的实际图像:

CanvasImage image = PlayN.graphics().createImage(50f, 50f);

我创建了一个路径

Path path = image.canvas().createPath();

我将路径转到六边形

我关闭路径

path.close();

我创建了一个模式

Pattern pattern = patternImage.toPattern();

我用新创建的图案

绘制画布
image.canvas().setFillPattern(pattern);
image.canvas().fillPath(path);

在Java平台上,它可以很好地工作,但在HTML平台上,路径定义的形状是完全黑色的,就像未加载图像一样。但是,在Chrome控制台中,我确实看到正确下载的图片。此外,我试图用纯色填充路径,工作正常。所以我的问题是为什么我的道路涂成黑色?

1 个答案:

答案 0 :(得分:1)

如果模式repeat-xrepeat-y都设置为false,则表明HTML平台画布未填充模式。

HtmlCanvas.java

public CanvasPattern pattern(Context2d ctx) {
  Context2d.Repetition repeat;
  if (repeatX) {
    if (repeatY) {
      repeat = Context2d.Repetition.REPEAT;
    } else {
      repeat = Context2d.Repetition.REPEAT_X;
    }
  } else if (repeatY) {
    repeat = Context2d.Repetition.REPEAT_Y;
  } else {
    return null;
  }
  return ctx.createPattern(patimg, repeat);
}

查看该代码,我看到返回null而不是Context2d.Repetition.NO_REPEAT。因此,没有填充图案,并且路径填充了默认的填充颜色,即黑色。我对此进行了测试,这似乎就是这种情况。现在,我的模式充满了正确的图像。

Pauli Savolainen