通往成功之路

C#画坐标系

2018-03-02  本文已影响60人  此十八

using System;  

using System.Collections.Generic;  

using System.Linq;  

using System.Text;  

using System.Threading.Tasks;  

using System.Windows.Forms;  

using System.Drawing;    

namespace 坐标1  

{  

class XYlinesFactory  

    {  

        #region   画出X轴与Y轴  

///     

/// 在任意的panel里画一个坐标,坐标所在的四边形距离panel边50像素    

///     

///     

public void DrawXY(Panel pan)  

        {  

            Graphics g = pan.CreateGraphics();  

//整体内缩move像素    

float move = 50f;  

float newX = pan.Width - move;  

float newY = pan.Height - move;  

//绘制X轴,    

PointF px1 =new PointF(move, newY);  

PointF px2 =new PointF(newX, newY);  

g.DrawLine(new Pen(Brushes.Black, 2), px1, px2);  

//绘制Y轴    

PointF py1 =new PointF(move, move);  

PointF py2 =new PointF(move, newY);  

g.DrawLine(new Pen(Brushes.Black, 2), py1, py2);  

        }  

        #endregion  

///     

/// 画出Y轴上的分值线,从零开始    

///     

///     

///     

///     

        #region   画出Y轴上的分值线,从零开始  

public void DrawYLine(Panel pan, float maxY, int len)  

        {  

float move = 50f;  

float LenX = pan.Width - 2 * move;  

float LenY = pan.Height - 2 * move;  

            Graphics g = pan.CreateGraphics();  

for (int i = 0; i <= len; i++)    //len等份Y轴    

            {  

PointF px1 =new PointF(move, LenY * i / len + move);  

PointF px2 =new PointF(move + 4, LenY * i / len + move);  

string sx = (maxY - maxY * i / len).ToString();  

g.DrawLine(new Pen(Brushes.Black, 2), px1, px2);  

StringFormat drawFormat =new StringFormat();  

                drawFormat.Alignment = StringAlignment.Far;  

                drawFormat.LineAlignment = StringAlignment.Center;  

g.DrawString(sx,new Font("宋体", 8f), Brushes.Black, new PointF(move / 1.2f, LenY * i / len + move * 1.1f), drawFormat);  

            }  

Pen pen =new Pen(Color.Black, 1);  

g.DrawString("Y轴", new Font("宋体 ", 10f), Brushes.Black, new PointF(move / 3, move / 2f));  

        }  

        #endregion  

///     

/// 画出Y轴上的分值线,从任意值开始    

///     

///     

///     

///     

///     

        #region   画出Y轴上的分值线,从任意值开始  

public void DrawYLine(Panel pan, float minY, float maxY, int len)  

        {  

float move = 50f;  

float LenX = pan.Width - 2 * move;  

float LenY = pan.Height - 2 * move;  

            Graphics g = pan.CreateGraphics();  

for (int i = 0; i <= len; i++)    //len等份Y轴    

            {  

PointF px1 =new PointF(move, LenY * i / len + move);  

PointF px2 =new PointF(move + 4, LenY * i / len + move);  

string sx = (maxY - (maxY - minY) * i / len).ToString();  

g.DrawLine(new Pen(Brushes.Black, 2), px1, px2);  

StringFormat drawFormat =new StringFormat();  

                drawFormat.Alignment = StringAlignment.Far;  

                drawFormat.LineAlignment = StringAlignment.Center;  

g.DrawString(sx,new Font("宋体", 8f), Brushes.Black, new PointF(move / 1.2f, LenY * i / len + move * 1.1f), drawFormat);  

            }  

Pen pen =new Pen(Color.Black, 1);  

g.DrawString("Y轴", new Font("宋体 ", 10f), Brushes.Black, new PointF(move / 3, move / 2f));  

        }  

        #endregion  

///     

/// 画出X轴上的分值线,从零开始    

///     

///     

///     

///     

        #region   画出X轴上的分值线,从零开始  

public void DrawXLine(Panel pan, float maxX, int len)  

        {  

float move = 50f;  

float LenX = pan.Width - 2 * move;  

float LenY = pan.Height - 2 * move;  

            Graphics g = pan.CreateGraphics();  

for (int i = 1; i <= len; i++)  

            {  

PointF py1 =new PointF(LenX * i / len + move, pan.Height - move - 4);  

PointF py2 =new PointF(LenX * i / len + move, pan.Height - move);  

string sy = (maxX * i / len).ToString();  

g.DrawLine(new Pen(Brushes.Black, 2), py1, py2);  

g.DrawString(sy,new Font("宋体", 8f), Brushes.Black, new PointF(LenX * i / len + move, pan.Height - move / 1.1f));  

            }  

Pen pen =new Pen(Color.Black, 1);  

g.DrawString("X轴", new Font("宋体 ", 10f), Brushes.Black, new PointF(pan.Width - move / 1.5f, pan.Height - move / 1.5f));  

        }  

        #endregion  

        #region   画出X轴上的分值线,从任意值开始  

///     

/// 画出X轴上的分值线,从任意值开始    

///     

///     

///     

///     

///     

public void DrawXLine(Panel pan, float minX, float maxX, int len)  

        {  

float move = 50f;  

float LenX = pan.Width - 2 * move;  

float LenY = pan.Height - 2 * move;  

            Graphics g = pan.CreateGraphics();  

for (int i = 0; i <= len; i++)  

            {  

PointF py1 =new PointF(LenX * i / len + move, pan.Height - move - 4);  

PointF py2 =new PointF(LenX * i / len + move, pan.Height - move);  

string sy = ((maxX - minX) * i / len + minX).ToString();  

g.DrawLine(new Pen(Brushes.Black, 2), py1, py2);  

g.DrawString(sy,new Font("宋体", 8f), Brushes.Black, new PointF(LenX * i / len + move, pan.Height - move / 1.1f));  

            }  

Pen pen =new Pen(Color.Black, 1);  

g.DrawString("X轴", new Font("宋体 ", 10f), Brushes.Black, new PointF(pan.Width - move / 1.5f, pan.Height - move / 1.5f));  

        }  

        #endregion    

    }  

}  

上一篇 下一篇

猜你喜欢

热点阅读