绘制坐标系又有了最新的需求,要求在X轴两侧都可以绘制Y坐标轴,具体来说,绘制直角坐标系的时候,X轴的绘制是正常的绘制要求,但是在绘制Y轴的时候,既可以在X轴左侧绘制多个Y轴,也可以在X轴右侧绘制多个Y轴,还有在两边同时绘制多个Y轴。
还是梳理一下之前的代码哪些能用,哪些要改。
首先是能复用的功能:
- 绘制X轴的代码;
- 绘制Y轴的代码;
- 计算坐标轴原点的代码;
- 绘制左侧Y轴原点的代码。
然后是需要改动的功能:
- 计算X轴宽度的代码;
- 绘制右侧Y轴原点的代码。
现在绘制包含窗口左侧右侧都包含多个Y轴的直角坐标系的步骤如下:
1)计算坐标轴位置信息
a)计算左侧Y轴所占的宽度,这里每个Y轴的宽度包括长刻度线宽度,也包括长刻度线上的文本宽度(代码实现的时候偷懒,设置的固定宽度)
b)计算右侧Y轴所占的宽度;
c)计算直角坐标系的原点坐标,以及X轴和Y轴的宽度
2)绘制坐标轴
a)获取左侧从右至左第一个Y轴的原点起始位置
b)绘制左侧第一个Y轴
c)依次绘制左侧剩余的Y轴坐标轴
d)绘制X轴
e)获取右侧从左至右第一个Y轴的原点起始位置
f)绘制右侧第一个Y轴
g)依次绘制右侧剩余的Y轴坐标轴
程序的效果图如下:
代码放在了github上面,源码地址:https://github.com/guochao2299/DrawRectangularCoordinateSystem/tree/LeftRightYAxe/DrawRectangularCoordinateSystem3st
C#使用GDI+绘制直角坐标系(3)
最新推荐文章于 2021-03-21 20:57:38 发布