2.canvas绘制网格以及坐标轴
2017-11-24 19:11
911 查看
html代码:
<canvas id="canvas2"width="300" height="300"></canvas>JS代码:
var canvas = document.getElementById('canvas2'), context = canvas.getContext('2d'), axis_margin = 40, axis_origin = {x : axis_margin , y : canvas.height - axis_margin}, axis_top = axis_margin , axis_right = canvas.width - axis_margin , horizontal_tick_spacing = 10, vertical_tick_spacing = 10 , axis_width = axis_right - axis_origin.x , axis_height = axis_origin.y - axis_top , num_vertical_ticks = axis_height / vertical_tick_spacing, num_horizontal_ticks = axis_width / horizontal_tick_spacing , tick_width = 10 , ticks_linewidth = 0.5 , ticks_color = 'white' , axis_linewidth = 1.0 , axis_color = 'white' ; function drawGrid(stepx , stepy){//绘制网格 context.strokeStyle = 'black'; context.lineWidth = 0.5 ; for(var i = stepx + 0.5 ; i < context.canvas.width ; i += stepx){ context.beginPath(); context.moveTo(i , 0); context.lineTo(i , context.canvas.height); context.stroke(); } for(var i = stepy + 0.5 ; i < context.canvas.height ; i += stepy){ context.beginPath(); context.moveTo(0 , i); context.lineTo(context.canvas.width , i); context.stroke(); } } function drawAxes(){//绘制坐标轴 context.save(); context.strokeStyle = axis_color; context.lineWidth = axis_linewidth; drawHorizontalAxis(); drawVerticalAxis(); context.lineWidth = ticks_linewidth; context.strokeStyle = ticks_color; drawVerticalAxisTicks(); drawHorizontalAxisTicks(); context.restore(); } function drawHorizontalAxis(){ context.beginPath(); context.moveTo(axis_origin.x , axis_origin.y); context.lineTo(axis_right , axis_origin.y); context.stroke(); } function drawVerticalAxis(){ context.beginPath(); context.moveTo(axis_origin.x , axis_origin.y); context.lineTo(axis_origin.x , axis_top); context.stroke(); } function drawVerticalAxisTicks(){ var deltaX; for(var i = 1;i < num_vertical_ticks ; ++i){ context.beginPath(); context.lineWidth=1; if(i % 5 === 0) deltaX = tick_width; else deltaX = tick_width / 2; context.moveTo(axis_origin.x - deltaX , axis_origin.y - i * vertical_tick_spacing); context.lineTo(axis_origin.x + deltaX , axis_origin.y - i * vertical_tick_spacing); context.stroke(); } } function drawHorizontalAxisTicks(){ var deltaY; for(var i = 1;i < num_horizontal_ticks ; ++i){ context.beginPath(); if(i % 5 === 0) deltaY = tick_width; else deltaY = tick_width / 2; context.moveTo(axis_origin.x + i * horizontal_tick_spacing , axis_origin.y - deltaY); context.lineTo(axis_origin.x + i * horizontal_tick_spacing , axis_origin.y + deltaY); context.stroke(); } } drawGrid(10,10); drawAxes();
相关文章推荐
- [js高手之路]html5 canvas教程 - 1px问题以及绘制坐标系网格
- Canvas---Canvas版画图,坐标轴绘制,网格绘制,橡皮筋式画直线
- canvas绘制网格(增加坐标)
- 【Html5每日练习】canvas绘制坐标变换图形
- Canvas绘制网格
- 使用matplotlib绘制图像并设置标题以及坐标轴等信息
- HTML5绘图之Canvas标签 绘制坐标轴
- egret 45度地图网格绘制以及坐标转换
- [置顶] arcgis api for js入门开发系列二十 用HTML5 canvas绘制地图 瓦片以及如何计算
- Canvas绘制以及使用第三方字体(多媒体学习基础)
- Help:立体图绘制以及根据X,Y,Z三坐标值,在图上描点
- 用canvas.drawText()绘制字体时,字体绘制位置坐标小解
- 【实例】html5在canvas上绘制坐标轴
- html5之canvas标签应用之 2d图形绘制以及图片绘制
- html5 canvas绘制圆形印章,以及与页面交互
- html获取鼠标在页面的坐标以及在canvas上的坐标
- Canvas练习之绘制网格
- 安卓绘制Canvas与坐标(一)
- 每日一个js实例1---纯js与canvas实现心电图网格绘制
- Andriod自定义View二:canvas.drawText参数的介绍以及绘制一个文本居中的案例