C#使用GDI+绘制直角坐标系

C#窗口中的坐标系是如下图所示,原点在窗口左上角,X轴方向是自左向右,Y轴方向是自上向下。
C#使用GDI+绘制直角坐标系_第1张图片
如果想在C#窗口中绘制正常的直角坐标系,例如入下图所示的第一象限的坐标系图形,就需要做专门的处理了。
C#使用GDI+绘制直角坐标系_第2张图片
 本文介绍如何绘制如上图所示的第一象限的直角坐标系。
 用到的Graphics类中的函数如下:
平移函数:TranslateTransform;
画直线函数:DrawLine;
        画文字函数:DrawString;
其它一些细节的设置:
1)长刻度线长度(高度)为5像素;
2)短刻度线长度(高度)为2像素;
3)每个坐标轴分为10个大的区间段;
4)每个大的区间段,也就是两个长刻度线之间分为10个小区间段;
5)坐标轴上的字体,宋体,8号字。
实现步骤:
1)计算坐标原点
坐标原点在左下角。
水平方向上,原点左边主要有三个需要计算的尺寸:
a)图形到左边的空白;
b)Y轴长刻度线上的文本最宽宽度;
c)Y轴长刻度线宽度。
这三个值确定了,坐标原点的横坐标就确定了。
   竖直方向上,原点下方主要有三个需要计算的尺寸:
a)图形到下面的空白距离;
b)X轴长刻度线下方的文本高度;
c)X轴长刻度线高度。
这三个值确定了,坐标原点的纵坐标就确定了。
2)计算坐标轴长度
这里代码实现的比较偷懒。坐标原点的横坐标到窗口右边的距离减去2倍空白距离就当成X轴长度。坐标原点的纵坐标到窗口上方的距离减去2倍空白距离就当成Y轴长度。
3)绘制Y轴
首先计算Y轴每个大区间段和小区间段占用多少像素,然后从坐标原点开始,从下往上绘制长、短刻度线,同时在绘制完刻度线之后,在刻度线的左边绘制长刻度线对应的尺寸。
4)绘制X轴
首先计算X轴每个大区间段和小区间段占用多少像素,然后从坐标原点开始,从左往右绘制长、短刻度线,同时在绘制完刻度线之后,在刻度线的下方绘制长刻度线对应的尺寸。
5)最终效果
C#使用GDI+绘制直角坐标系_第3张图片
代码地址:https://github.com/guochao2299/DrawRectangularCoordinateSystem
 
 

你可能感兴趣的:(dotnet编程)