找回密码
 立即注册

扫一扫,访问微社区

查看: 9971|回复: 6

微信小程序学习用demo:使用canvas绘制雷达图

  [复制链接]
发表于 2017-3-23 11:34:37 | 显示全部楼层 |阅读模式



[mw_shl_code=html,true]function drawWithArr(arr) {
  var radius = 5;
  var space = 200;
  var tempS = 200;
  var a = 200;
  var b = 100;
  var tempB = 100;
  var windowWidth = 320;
  wx.getSystemInfo({
    success: function (res) {
      windowWidth = res.windowWidth;
      // space = windowWidth / 6;
    }
  })

  var ha = Math.cos(Math.PI / 180 * 60)
  console.log(ha)

  var context = wx.createContext()


  context.setLineWidth(2)


  // context.beginPath();
  context.setStrokeStyle("#00ff00")


  //////////////////////////////////////////////////////////////////////////////一层
  context.beginPath();
  context.moveTo(a, b)//一

  context.lineTo(a + space * Math.cos(Math.PI / 180 * 36), b + space * Math.cos(Math.PI / 180 * 54))//二

  context.lineTo(a + space * Math.cos(Math.PI / 180 * 36) - space * Math.cos(Math.PI / 180 * 72), b + space * Math.cos(Math.PI / 180 * 54) + space * Math.cos(Math.PI / 180 * 18))//三

  context.lineTo(a + space * Math.cos(Math.PI / 180 * 36) - space * Math.cos(Math.PI / 180 * 72) - space, b + space * Math.cos(Math.PI / 180 * 54) + space * Math.cos(Math.PI / 180 * 18))//四

  context.lineTo(a - space * Math.cos(Math.PI / 180 * 36), b + space * Math.cos(Math.PI / 180 * 54))//五

  context.lineTo(a, b)//一
  context.stroke()

  //////////////////////////////////////////////////////////////////////////////五条分割线

  context.beginPath();
  context.moveTo(a, b)
  context.lineTo(a, b + space / 2 / Math.cos(Math.PI / 180 * 54))//中

  console.log(b + space / 2 / Math.cos(Math.PI / 180 * 54))

  context.lineTo(a + space * Math.cos(Math.PI / 180 * 36), b + space * Math.cos(Math.PI / 180 * 54))//二

  context.lineTo(a + space * Math.cos(Math.PI / 180 * 36) - space * Math.cos(Math.PI / 180 * 72), b + space * Math.cos(Math.PI / 180 * 54) + space * Math.cos(Math.PI / 180 * 18))//三

  context.lineTo(a, b + space / 2 / Math.cos(Math.PI / 180 * 54))//中

  context.lineTo(a + space * Math.cos(Math.PI / 180 * 36) - space * Math.cos(Math.PI / 180 * 72) - space, b + space * Math.cos(Math.PI / 180 * 54) + space * Math.cos(Math.PI / 180 * 18))//四

  context.lineTo(a, b + space / 2 / Math.cos(Math.PI / 180 * 54))//中

  context.lineTo(a - space * Math.cos(Math.PI / 180 * 36), b + space * Math.cos(Math.PI / 180 * 54))//五

  context.stroke()

  //////////////////////////////////////////////////////////////////////////////二层
  context.beginPath();
  context.setStrokeStyle("#0000ff")


  b = b + 0.2 * space / 2 / Math.cos(Math.PI / 180 * 54)
  space = space * 0.8
  console.log(b)
  context.beginPath();
  context.moveTo(a, b)//一

  context.lineTo(a + space * Math.cos(Math.PI / 180 * 36), b + space * Math.cos(Math.PI / 180 * 54))//二

  context.lineTo(a + space * Math.cos(Math.PI / 180 * 36) - space * Math.cos(Math.PI / 180 * 72), b + space * Math.cos(Math.PI / 180 * 54) + space * Math.cos(Math.PI / 180 * 18))//三

  context.lineTo(a + space * Math.cos(Math.PI / 180 * 36) - space * Math.cos(Math.PI / 180 * 72) - space, b + space * Math.cos(Math.PI / 180 * 54) + space * Math.cos(Math.PI / 180 * 18))//四

  context.lineTo(a - space * Math.cos(Math.PI / 180 * 36), b + space * Math.cos(Math.PI / 180 * 54))//五

  context.lineTo(a, b)//一
  context.stroke()



  //////////////////////////////////////////////////////////////////////////////三层
  context.beginPath();
  context.setStrokeStyle("#0000ff")

  b = tempB;
  space = tempS;
  b = b + 0.4 * space / 2 / Math.cos(Math.PI / 180 * 54)
  space = space * 0.6
  console.log(b)
  context.beginPath();
  context.moveTo(a, b)//一

  context.lineTo(a + space * Math.cos(Math.PI / 180 * 36), b + space * Math.cos(Math.PI / 180 * 54))//二

  context.lineTo(a + space * Math.cos(Math.PI / 180 * 36) - space * Math.cos(Math.PI / 180 * 72), b + space * Math.cos(Math.PI / 180 * 54) + space * Math.cos(Math.PI / 180 * 18))//三

  context.lineTo(a + space * Math.cos(Math.PI / 180 * 36) - space * Math.cos(Math.PI / 180 * 72) - space, b + space * Math.cos(Math.PI / 180 * 54) + space * Math.cos(Math.PI / 180 * 18))//四

  context.lineTo(a - space * Math.cos(Math.PI / 180 * 36), b + space * Math.cos(Math.PI / 180 * 54))//五

  context.lineTo(a, b)//一
  context.stroke()



  //////////////////////////////////////////////////////////////////////////////四层
  b = tempB;
  space = tempS;
  context.beginPath();
  context.setStrokeStyle("#0000ff")


  b = b + 0.6 * space / 2 / Math.cos(Math.PI / 180 * 54)
  console.log(b)
  space = space * 0.4
  console.log(b)
  context.beginPath();
  context.moveTo(a, b)//一

  context.lineTo(a + space * Math.cos(Math.PI / 180 * 36), b + space * Math.cos(Math.PI / 180 * 54))//二

  context.lineTo(a + space * Math.cos(Math.PI / 180 * 36) - space * Math.cos(Math.PI / 180 * 72), b + space * Math.cos(Math.PI / 180 * 54) + space * Math.cos(Math.PI / 180 * 18))//三

  context.lineTo(a + space * Math.cos(Math.PI / 180 * 36) - space * Math.cos(Math.PI / 180 * 72) - space, b + space * Math.cos(Math.PI / 180 * 54) + space * Math.cos(Math.PI / 180 * 18))//四

  context.lineTo(a - space * Math.cos(Math.PI / 180 * 36), b + space * Math.cos(Math.PI / 180 * 54))//五

  context.lineTo(a, b)//一
  context.stroke()


  //////////////////////////////////////////////////////////////////////////////五层
  b = tempB;
  space = tempS;
  context.beginPath();
  context.setStrokeStyle("#0000ff")


  b = b + 0.8 * space / 2 / Math.cos(Math.PI / 180 * 54)
  console.log(b)
  space = space * 0.2
  console.log(b)
  context.beginPath();
  context.moveTo(a, b)//一

  context.lineTo(a + space * Math.cos(Math.PI / 180 * 36), b + space * Math.cos(Math.PI / 180 * 54))//二

  context.lineTo(a + space * Math.cos(Math.PI / 180 * 36) - space * Math.cos(Math.PI / 180 * 72), b + space * Math.cos(Math.PI / 180 * 54) + space * Math.cos(Math.PI / 180 * 18))//三

  context.lineTo(a + space * Math.cos(Math.PI / 180 * 36) - space * Math.cos(Math.PI / 180 * 72) - space, b + space * Math.cos(Math.PI / 180 * 54) + space * Math.cos(Math.PI / 180 * 18))//四

  context.lineTo(a - space * Math.cos(Math.PI / 180 * 36), b + space * Math.cos(Math.PI / 180 * 54))//五

  context.lineTo(a, b)//一
  context.stroke()

  //////////////////////////////////////////////////////////////////////////////绘制比例
  b = tempB;
  space = tempS;
  context.beginPath();
  context.setStrokeStyle("rgba(100%,25%,100%,0.5)")
  context.setFillStyle("rgba(100%,25%,100%,0.5)")
  //总宽 space / 2 / Math.cos(Math.PI / 180 * 54)
  var width = space / 2 / Math.cos(Math.PI / 180 * 54)
  //成绩1  (a, b + 总宽 - g1/100*总宽)
  context.moveTo(a,b+width-0.7*width)
  //成绩2 (a + 总宽*比例*sin72) b+总宽-总宽*比例*cos72
context.lineTo(a+width*0.5*Math.sin(Math.PI / 180 * 72),b+width-width*0.5*Math.cos(Math.PI / 180 * 72))
//成绩3 a+width*bi*cos54
context.lineTo(a+width*0.9*Math.cos(Math.PI / 180 * 54),b+width+width*0.9*Math.cos(Math.PI / 180 * 36))
//成绩4
context.lineTo(a-width*0.7*Math.cos(Math.PI / 180 * 54),b+width+width*0.7*Math.cos(Math.PI / 180 * 36))
// 成绩5
context.lineTo(a-width*0.8*Math.sin(Math.PI / 180 * 72),b+width-width*0.8*Math.cos(Math.PI / 180 * 72))
//huiqu
context.lineTo(a,b+width-0.7*width)
context.stroke()
context.fill()


  //   context.setStrokeStyle("#00ff00")
  //   context.setFillStyle("#ff0000")






  // 调用 wx.drawCanvas,通过 canvasId 指定在哪张画布上绘制,通过 actions 指定绘制行为
  wx.drawCanvas({
    canvasId: 'snakeCanvas',
    actions: context.getActions(), // 获取绘图动作数组

  })
}

module.exports = {
  drawWithArr: drawWithArr
}[/mw_shl_code]


游客,如果您要查看本帖隐藏内容请回复

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

1

主题

2

回帖

40

金钱

新人求带

积分
0
发表于 2017-3-29 20:02:08 | 显示全部楼层
回复

使用道具 举报

0

主题

8

回帖

106

金钱

新人求带

积分
0
发表于 2017-3-30 15:56:11 | 显示全部楼层
啥也不说了,感谢楼主分享哇!

0

主题

18

回帖

16

金钱

新人求带

积分
0
发表于 2017-4-15 16:59:46 | 显示全部楼层
啥也不说了,感谢楼主分享哇!

0

主题

18

回帖

16

金钱

新人求带

积分
0
发表于 2017-4-15 17:05:00 | 显示全部楼层
啥也不说了,感谢楼主分享哇!

0

主题

408

回帖

600

金钱

新人求带

积分
0
发表于 2020-4-24 14:13:52 | 显示全部楼层
我有流量,你有产品,我们就可以合作,有意的个人开发者朋友可以联系微,信,号j i m 2 0 1 8 0 6 8 8,详聊

0

主题

408

回帖

600

金钱

新人求带

积分
0
发表于 2020-4-24 14:14:03 | 显示全部楼层
我有流量,你有产品,我们就可以合作,有意的个人开发者朋友可以联系微,信,号j i m 2 0 1 8 0 6 8 8,详聊
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|微信小程序开发|教程|文档|资源汇总_即速论坛 ( 粤ICP备14097199号-1  

GMT+8, 2024-11-22 12:03 , Processed in 0.129022 second(s), 32 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表