C#使用GDI+绘制直角坐标系(2)
2018-02-05 00:56
435 查看
前段时间发表了一篇使用C# GDI+绘制直角坐标系的文章《C#使用GDI+绘制直角坐标系》。该文章介绍如何使用GDI+绘制正常状态的直角坐标系,后面又碰到了新的需求,同样是绘制直角坐标系,但要求X轴共用,同时绘制多个Y轴。
一看到这个需求,首先想到的是当初绘制直角坐标系的哪些代码可以用,哪些需要改动。
首先列出可以复用的地方:
绘制X轴的代码
绘制Y轴的代码
需要改动的地方:
- 计算坐标轴原点的代码
- 绘制Y轴原点的代码
因此现在绘制包含多个Y轴的直角坐标系的步骤如下:
1)计算坐标轴位置信息
a)计算多个Y轴所占的宽度,这里每个Y轴的宽度包括长刻度线宽度,也包括长刻度线上的文本宽度(代码实现的时候偷懒,设置的固定宽度)
b)计算直角坐标系的原点坐标,以及X轴和Y轴的宽度
2)绘制坐标轴
a)获取从右至左第一个Y轴的原点起始位置
b)绘制第一个Y轴
c)依次绘制剩余的Y轴坐标轴
d)绘制X轴
下面是效果图:
代码放在Github上面,地址如下(DrawRectangularCoordinateSystem2st那个文件夹):
https://github.com/guochao2299/DrawRectangularCoordinateSystem/tree/MultiYAxe
一看到这个需求,首先想到的是当初绘制直角坐标系的哪些代码可以用,哪些需要改动。
首先列出可以复用的地方:
绘制X轴的代码
绘制Y轴的代码
需要改动的地方:
- 计算坐标轴原点的代码
- 绘制Y轴原点的代码
因此现在绘制包含多个Y轴的直角坐标系的步骤如下:
1)计算坐标轴位置信息
a)计算多个Y轴所占的宽度,这里每个Y轴的宽度包括长刻度线宽度,也包括长刻度线上的文本宽度(代码实现的时候偷懒,设置的固定宽度)
b)计算直角坐标系的原点坐标,以及X轴和Y轴的宽度
2)绘制坐标轴
a)获取从右至左第一个Y轴的原点起始位置
b)绘制第一个Y轴
c)依次绘制剩余的Y轴坐标轴
d)绘制X轴
下面是效果图:
代码放在Github上面,地址如下(DrawRectangularCoordinateSystem2st那个文件夹):
https://github.com/guochao2299/DrawRectangularCoordinateSystem/tree/MultiYAxe
相关文章推荐
- C#使用GDI+绘制直角坐标系
- C# 数据库系统中使用GDI+绘制柱状图
- [C#]GDI+中使用BitBlt绘制图像到窗口失败
- C#中使用GDI+绘制一把漂亮的直尺(带透明度)
- C#使用GDI+绘制高质量图和字体
- C#中使用GDI+绘制辉光效果文字
- C# 使用GDI+绘制漂亮的MenuStrip和ContextMenuStrip皮肤
- C#中使用GDI+绘制形状时自动缩放文本
- 使用C#绘制MO中地图的图例
- 使用GDI+绘制高质量图和字体(2)
- C#中使用[GDI+]+PrintDocument实现打印
- [收藏]使用GDI+绘制高质量图和字体
- 源码推荐:一个使用C#绘制图形引擎的Framework
- 使用C#来绘制汽车里程表
- c#写的五子棋程序,供学习WinForms的鼠标事件和使用GDI+,源码下载。
- C#中使用GDI+实现饼状图和柱状图跟数据库联接显示数据的方法
- C#中使用GDI+制作个性化的网站新闻标题
- 使用GDI+绘制高质量图和字体(2)
- 使用GDI+绘制高质量图和字体
- 使用C#来绘制汽车里程表