[WPF] 在Canvas上绘制网格线

[WPF] 在Canvas上绘制网格线,第1张

项目上需要绘制坐标轨迹,找开源组件也是费尽周折,最后发现Canvas + Polyline就可以基本的轨迹功能。为使轨迹不过于单调增加了网格线背景。

学习WPF: 第6个月。

网格线的绘制主要依赖窗口的宽高和设定的间隔计算,画多少行,画多少列,画多长,画多高。

支持窗口缩放只要是监听 SizeChanged 的回调事件,窗口尺寸变化,实现重绘和更新。

封装成工具类, 源码 。

之前用过 echarts 等图表插件,首次尝试自己写原生 canvas ,还以为多难多复杂的东西,深入了解之后发现就是数学中的几何图形嘛~ 欢迎大家和我一起来入坑!

<canvas> 看起来和 <img> 标签一样,只是 <canvas> 只有两个可选的属性 width、heigth 属性,而没有 src、alt 属性。

如果不给 <canvas> 设置 widht、height 属性时,则默认 width为300、height 为 150,单位都是 px。也可以使用 css 属性来设置宽高,但是如宽高属性和初始比例不一致,他会出现扭曲。所以,建议永远不要使用 css 属性来设置 <canvas> 的宽高。

替换内容

由于某些较老的浏览器(尤其是 IE9 之前的 IE 浏览器)或者浏览器不支持 HTML 元素 <canvas>,在这些浏览器上你应该总是能展示替代内容。

支持 <canvas> 的浏览器会只渲染 <canvas> 标签,而忽略其中的替代内容。不支持 <canvas> 的浏览器则 会直接渲染替代内容。

用文本替换:

用 <img> 替换:

结束标签 </canvas> 不可省略。

与 <img> 元素不同, <canvas> 元素需要结束标签( </canvas>)。如果结束标签不存在,则文档的其余部分会被认为是替代内容,将不会显示出来。

如下图所示,canvas 元素默认被网格所覆盖。通常来说网格中的一个单元相当于 canvas 元素中的一像素。栅格的起点为左上角,坐标为 (0,0) 。所有元素的位置都相对于原点来定位。所以图中蓝色方形左上角的坐标为距离左边(X 轴)x 像素,距离上边(Y 轴)y 像素,坐标为 (x,y)。

后面我们会涉及到坐标原点的平移、网格的旋转以及缩放等。

<canvas> 只支持一种原生的图形绘制:矩形。所有其他图形都至少需要生成一种路径 (path)。不过,我们拥有众多路径生成的方法让复杂图形的绘制成为了可能。

canvas 提供了三种方法绘制矩形:

说明:这 3 个方法具有相同的参数。

图形的基本元素是路径。

路径是通过不同颜色和宽度的线段或曲线相连形成的不同形状的点的集合。

一个路径,甚至一个子路径,都是闭合的。

使用路径绘制图形需要一些额外的步骤:

下面是需要用到的方法:

有两个方法可以绘制圆弧:

注意:

arcTo 方法的说明:

这个方法可以这样理解。绘制的弧形是由两条切线所决定。

第 1 条切线:起始点和控制点1决定的直线。

第 2 条切线:控制点1 和控制点2决定的直线。

其实绘制的圆弧就是与这两条直线相切的圆弧。


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

原文地址: http://outofmemory.cn/bake/11645238.html

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

发表评论

登录后才能评论

评论列表(0条)

保存