我正在使用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控制台中,我确实看到正确下载的图片。此外,我试图用纯色填充路径,工作正常。所以我的问题是为什么我的道路涂成黑色?
答案 0 :(得分:1)
如果模式repeat-x
和repeat-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