在android中绘制一个箭头

在android中绘制一个箭头,第1张

概述我试图画一个箭头指向我图像中的对象.我已经能够编写代码来绘制线但是似乎无法找到绘制箭头的方法.我写的用于绘制可拖动线的代码如下.我需要在ACTION_UP事件上绘制一个箭头到线指向的方向 if(event.getAction() ==MotionEvent.ACTION_DOWN) { if (count==1){ x1 = event.getX( 我试图画一个箭头指向我图像中的对象.我已经能够编写代码来绘制线但是似乎无法找到绘制箭头的方法.我写的用于绘制可拖动线的代码如下.我需要在ACTION_UP事件上绘制一个箭头到线指向的方向

if(event.getAction() ==MotionEvent.ACTION_DOWN) {              if (count==1){           x1 = event.getX();          y1 = event.getY();          System.out.println(count+"count of value a;skd");          Toast.makeText(getApplicationContext(),""+(radius+count),Toast.LENGTH_LONG).show();          Log.i(TAG,"coordinate x1 : "+String.valueOf(x1)+" y1 : "+String.valueOf(y1));     }}else if(event.getAction() ==MotionEvent.ACTION_MOVE){     imageVIEw.setimageBitmap(bmp2);     x2 = event.getX();     y2 = event.getY();     posX=(float)(x1+x2)/2;     posY=(float)(y1+y2)/2;     radius=(float) Math.sqrt((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2))/2;     onDraw();     Toast.makeText(getApplicationContext(),""+radius,Toast.LENGTH_LONG).show();}

嗨,对于仍然需要帮助的人来说.这就是我最终做到的
                     float h =(float)30.0;

float phi = (float) Math.atan2(y2 - y1,x2 - x1);     float angle1 = (float) (phi - Math.PI / 6);     float angle2 = (float) (phi + Math.PI / 6);    float x3 = (float) (x2 - h * Math.cos(angle1));    float x4 = (float) (x2 - h * Math.cos(angle2));    float y3 = (float) (y2 -  h * Math.sin(angle1));    float y4 = (float) (y2 -  h * Math.sin(angle2));   c.drawline(x1,y1,x2,y2,pnt);   c.drawline(x2,x3,y3,pnt);    c.drawline(x2,x4,y4,pnt);

我从stackoverflow中接受的答案和ios部分得到了帮助

解决方法 我如何做到这一点是找到线的斜率,它是在两点(开始和结束)之间绘制的.斜率为(dy / dx),这对你的箭头来说是一个很好的起点.假设您希望箭头的基部垂直于箭头的线,要找到基部的斜率,您将找到该线的斜率的相反倒数.例如,假设你的线的斜率为2.三角形底边的斜率为(-1/2),因为你做(1 /(oldslope))并乘以-1.我不太了解androID,但如果我没记错,在Java中,你会使用drawpolygon方法,你必须指定4个点(3个唯一,1个与第一个相同以关闭它).考虑到尖端底部的斜率,我们可以获得前两个点和最后一个点.在开始绘制箭头的尺寸之前,您应该知道,因此在这种情况下,b将是基线的长度.如果取Θ= arctan(dy / dx),则会在x轴和基线之间产生一个角度.使用该Θ值,您可以执行ydif = b * sin(Θ)以获得箭头的两个基角之间的y值差异.使用xdif = b * cos(Θ)做同样的事情可以得到两个基点之间x值的差异.如果用户绘制的线的最终点的位置是(x1,y1),那么三角形的基点的位置将是(x1-(xdif / 2),y1-(ydif / 2) ))和(x1(xdif / 2),y1(ydif / 2)).这两个点p1和p2是绘制多边形方法中的第一,第二和第四点.要找到第三个点,我们需要通过Θ= arctan(dy / dx)找到原始线的角度,这次使用原始的dy / dx.以这个角度.在我们完成点的实际计算之前,你首先必须知道箭头的尖端实际应该离你的行的末端有多远,在我的情况下,我将使用var h和h = 10. cordinate,(x,y),假设线尖的坐标是(x1,y1)你会做(x1hcosΘ,y1shinθ).将它用于drawpolygon()中的第三个值,您应该完成.对不起,如果我有点匆匆忙忙,我有点厌倦打字,如果你需要帮助就做评论. 总结

以上是内存溢出为你收集整理的在android中绘制一个箭头全部内容,希望文章能够帮你解决在android中绘制一个箭头所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1129915.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存