Java 如何绘制位图的三角形部分

Java 如何绘制位图的三角形部分,java,android,Java,Android,我正在尝试绘制位图的三角形部分。我已经知道如何使用path绘制填充三角形,并且我已经知道答案可能涉及称为BitmapShader的东西,但是我找不到任何清晰的文档或示例来将其放在一起 编辑:经过多次鞭笞和实验,我现在就快到了。我的代码如下所示: Paint paint; Path path = new Path(); BitmapShader bms = new BitmapShader(shrub_bitmap,TileMode.REPEAT ,TileMode.REPEAT ); pain

我正在尝试绘制位图的三角形部分。我已经知道如何使用path绘制填充三角形,并且我已经知道答案可能涉及称为BitmapShader的东西,但是我找不到任何清晰的文档或示例来将其放在一起

编辑:经过多次鞭笞和实验,我现在就快到了。我的代码如下所示:

Paint paint;
Path path = new Path();
BitmapShader bms = new BitmapShader(shrub_bitmap,TileMode.REPEAT ,TileMode.REPEAT  );
paint.setStyle(Style.FILL);
paint.setShader(bms);
path.reset();
path.setFillType(Path.FillType.EVEN_ODD);
path.moveTo(x1,y1);
path.lineTo(x2,y2);
path.lineTo(x3,y3);
path.close();
canvas.drawPath(path, paint);
paint.setShader(null);

剩下的唯一问题是,绘制三角形的位图以屏幕坐标为根。这意味着当三角形被设置动画时(即在屏幕周围的不同点绘制),它的外观就像一个窗口,让我们可以看到下面的静态图像。我真正想要的是将位图绑定到三角形上,使三角形看起来像一个四处移动的实体对象。你知道怎么解决吗?

关于你的第二个问题:


尝试使用canvas.translate(x1,y1)和moveTo(0,0),lineTo(x2-x1,y2-y1).

我对canvas.translate(0,0)不能撤消转换感到非常困惑!。。我需要画布。翻译(-x1,-y1)。。但现在一切正常。您还可以使用canvas.save()canvas.translate(x,y)。。。。和canvas.restore()还原将在上次保存之前重新建立转换状态。