如何使用正确的配置在 android.graphics.Path 中绘制箭头线

Posted

技术标签:

【中文标题】如何使用正确的配置在 android.graphics.Path 中绘制箭头线【英文标题】:How to Draw Arrowline in android.graphics.Path with correct configerations 【发布时间】:2014-10-10 05:52:32 【问题描述】:

我的尝试:

我正在尝试使用以下代码显示箭头线

Path mArrowPath=new Paint();;
mArrowPath.rewind();
mArrowPath.moveTo(0, mHeight / 2);
mArrowPath.lineTo(mWidth / 2, 0);
mArrowPath.lineTo(mWidth, mHeight / 2);
mArrowPath.lineTo(mWidth * 3 / 4, mHeight / 2);
mArrowPath.lineTo(mWidth * 3 / 4, mHeight);
mArrowPath.lineTo(mWidth / 4, mHeight);
mArrowPath.lineTo(mWidth / 4, mHeight / 2);
mArrowPath.lineTo(0, mHeight / 2);

Shape pathshap = new PathShape(mArrowP,maxWidth,maxHeight);

ShapeDrawable shapeD = new ShapeDrawable(pathshap);

shapeD.draw(canvas); //display it in onDraw(Canvas canvas)

我得到了以下结果

问题:

我无法绘制所需的预期结果,我无法理解/找到用于显示以下结果的路径配置参数! 我未能增加箭头线的lengthwidth大小。

预期结果:

任何帮助将不胜感激!

【问题讨论】:

您是否尝试在代码中将mWidth 替换为mHeight,反之亦然? 是的,我不擅长图形,我失败了增加箭头尾部的长度。具有指定的配置。 我不能使用 canvas.drawPath(path, paint) 来画这样的线 ***.com/questions/6713757/… 【参考方案1】:

你可以使用 canvas.rotate() 方法来旋转箭头

Path mArrowPath=new Paint();;
mArrowPath.rewind();
mArrowPath.moveTo(mWidth , mHeight / 2);
mArrowPath.lineTo(mWidth / 2, mHeight );
mArrowPath.lineTo(mWidth / 2, mHeight* 3 / 4);
mArrowPath.lineTo(0, mHeight* 3 / 4);
mArrowPath.lineTo(0, mHeight/ 4);
mArrowPath.lineTo(mWidth / 2, mHeight/ 4);
mArrowPath.lineTo(mWidth / 2,0);
mArrowPath.lineTo(mWidth , mHeight / 2);
Shape pathshap = new PathShape(mArrowP,maxWidth,maxHeight);

ShapeDrawable shapeD = new ShapeDrawable(pathshap);

shapeD.draw(canvas);

【讨论】:

在这种情况下,我不能使用画布,因为我使用的是 ShapeDrawable ,我可以使用 Matrix 进行任何形状旋转,我正在寻找 rifgt 配置来更改路径箭尾长度。 我认为是你的坐标有问题,试着用纸画。@LOG_TAG

以上是关于如何使用正确的配置在 android.graphics.Path 中绘制箭头线的主要内容,如果未能解决你的问题,请参考以下文章

如何在 NestJS 中正确设置配置?

如何使用正确的配置在 android.graphics.Path 中绘制箭头线

如何使用带有确认框的 radajaxmanager 正确配置删除功能?

如何确保正确配置anaconda环境以导入包[重复]

如何正确配置实验性 ECMAScript 模块,以便在 Node.js 中使用导入/导出

如何在 Travis-CI 配置文件 (YAML) 中正确使用 curl?