首页 >> 数码 >

android canvas离屏绘制 android用canvas画出线段和箭头

2022-06-21 23:50:15 来源: 用户: 

大家好,我是云百科的客服小柏,我来为大家解答以上问题。android,canvas离屏绘制,android用canvas画出线段和箭头很多人还不知道,现在让我们一起来看看吧!

解答:

1、 设置布局文件,添加2个控件,一个按钮,一个图片

2、 在维护能力添加两个控件的全局变量,以及画图工具的全局变量

3、 私有按钮btn_drawline

4、 私有ImageViewiv_画布

5、 专用位图基本位图

6、 私人帆布画布;

7、 私漆油漆;

8、 在oncreate()方法中初始化纽扣控件和图片控件,并给纽扣添加按键监听

9、 按键监听中调用画图方法:

10、 //初始化一个画笔,笔触宽度为5,颜色为红色

11、 Paint=newPaint();

12、 画画。setstrokewidth(1);

13、 paint.setColor(颜色。红色);

14、 iv_canvas=(ImageView)findViewById(r.id。iv_canvas);

15、 BTN画线。setonclicklistener(点击);

16、 BTN画线。setonclicklistener(新视图OnClickListener(){

17、 @覆盖

18、 公共voidonClick(视图五){

19、 drawTria((浮点)300,(浮点)100,(浮点)100,(浮点)400,

20、 50,10);

21、 }

22、 });

23、 画线段和箭头的方法,处理箭头指向任何方向都能显示出来

24、 受保护的无效drawTria(floatfromX,floatfromY,floattoX,floattoY,

25、 intheigth,intbottom){

26、 //高度和底部分别为三角形的高与底的一半,调节三角形大小

27、 基础位图=位图。创建位图(iv_canvas。getwidth(),

28、 iv_canvas.getHeight(),位图。配置ARGB_8888);

29、 画布=新画布(基础位图);

30、 画布.drawColor(颜色。黄色);//设置底色

31、 canvas.drawLine(fromX、fromY、toX、toY、paint);

32、 浮点juli=(浮点)数学。sqrt((toX-fromX)*(toX-fromX)

33、 (toY-fromY)*(toY-fromY));//获取线段距离

34、 floatjuliX=toX-fromX;//有正负,不要取绝对值

35、 floatJuly=toY-fromY;//有正负,不要取绝对值

36、 floatdianX=toX-(身高/juli*juliX);

37、 floatdianY=toY-(heigth/juli*July);

38、 floatdian2X=fromX(heigth/juli*juliX);

39、 floatdian2Y=fromY(heigth/juli*July);

40、 //终点的箭头

41、 PathPath=newPath();

42、 path.moveTo(toX,toY);//此点为三边形的起点

43、 路径。行到(dianX(下/七月*七月),dianY

44、 -(底/juli*juliX));

45、 路径。行到(dianX-(bottom/juli*July),dianY

46、 (底/juli*juliX));

47、 路径。close();//使这些点构成封闭的三边形

48、 canvas.drawPath(path,paint);

49、 //显示图像

50、 iv_画布。setimage位图(基础位图);

51、 }

52、 画出的箭头便随着线段的斜率而画出来了。

53、 线段的四个方向,以及线段平行X轴,平行Y轴的情况都能正常显示。

54、 如果要画双向箭头,只需要再添加一个箭头即可,调用以下方法:

55、 受保护的无效drawTria(floatfromX,floatfromY,floattoX,floattoY,

56、 intheigth,intbottom){

57、 //高度和底部分别为三角形的高与底的一半,调节三角形大小

58、 基础位图=位图。创建位图(iv_canvas。getwidth(),

59、 iv_canvas.getHeight(),位图。配置ARGB_8888);

60、 画布=新画布(基础位图);

61、 画布.drawColor(颜色。黄色);//设置底色

62、 canvas.drawLine(fromX、fromY、toX、toY、paint);

63、 浮点juli=(浮点)数学。sqrt((toX-fromX)*(toX-fromX)

64、 (toY-fromY)*(toY-fromY));//获取线段距离

65、 floatjuliX=toX-fromX;//有正负,不要取绝对值

66、 floatJuly=toY-fromY;//有正负,不要取绝对值

67、 floatdianX=toX-(身高/juli*juliX);

68、 floatdianY=toY-(heigth/juli*July);

69、 floatdian2X=fromX(heigth/juli*juliX);

70、 floatdian2Y=fromY(heigth/juli*July);

71、 //终点的箭头

72、 PathPath=newPath();

73、 path.moveTo(toX,toY);//此点为三边形的起点

74、 路径。行到(dianX(下/七月*七月),dianY

75、 -(底/juli*juliX));

76、 路径。行到(dianX-(bottom/juli*July),dianY

77、 (底/juli*juliX));

78、 路径。close();//使这些点构成封闭的三边形

79、 canvas.drawPath(path,paint);

80、 //起点的箭头

81、 PathPath2=newPath();

82、 path2.moveTo(fromX,fromY);//此点为边形的起点

83、 路径2。行到(dian2X(下/七月*七月),dian2Y

84、 -(底/juli*juliX));

85、 路径2。行到(dian2X-(下/七月*七月),dian2Y

86、 (底/juli*juliX));

87、 路径2。close();//使这些点构成封闭的三边形

88、 canvas.drawPath(path2,paint);

89、 //显示图像

90、 iv_画布。setimage位图(基础位图);

91、 }

本文到此讲解完毕了,希望对大家有帮助。

  免责声明:本文由用户上传,与本网站立场无关。财经信息仅供读者参考,并不构成投资建议。投资者据此操作,风险自担。 如有侵权请联系删除!

 
分享:
最新文章
站长推荐