您的位置:首页 > 编程语言 > C#

C# 具有背景栅格的绘曲线类(一)(转帖)

2012-07-05 10:11 686 查看
原文转自:/article/11436471.html

本文实现了用于绘制曲线的通用类,类实现对背景栅格的绘制,并将由外部传入到先进先出栈中的数据作为

[csharp]
view plaincopyprint?

曲线的关键点,返回一个位图的对象用于显示曲线。

曲线的关键点,返回一个位图的对象用于显示曲线。


using System;

using System.Collections.Generic;

using System.Collections;

using System.Text;

using System.Drawing;

namespace PID_Control

{

class Curve

{

public  Queue KeyDots=new Queue(); //曲线关键点

private Graphics objGraphic;//提供绘制的方法

public  Bitmap objBitmap;//位图对象

private Point CurrentPoint = new Point(0, 0); //当前点

private Point LastPoint = new Point(50, 635); //最后的点

private int m_Width = 900;// 图像宽度

private int m_Height = 650;//图像高度

private int m_XGrid = 50;//栅格X长度

private int m_YGrid = 50;//栅格Y长度

private Color m_BorderColor = Color.Blue; //边框颜色

private Color m_BgColor = Color.Black;//背景颜色

private Color m_GridColor = Color.Gray;//栅格颜色

public int Width

{

set { m_Width =value; }

get { return m_Width; }

}

public int Height

{

set { m_Height = value; }

get { return m_Height; }

}

public Color BorderColor

{

set { m_BorderColor = value; }

get { return m_BorderColor; }

}

public Color BgColor

{

set { m_BgColor = value; }

get { return m_BgColor; }

}

public Color GridColor

{

set { m_GridColor = value; }

get { return m_GridColor; }

}

public int XGrid

{

set { m_XGrid = value; }

get { return m_XGrid; }

}

public int YGrid

{

set { m_YGrid = value; }

get { return m_YGrid; }

}

public Curve()

{

InitializeGraph();

DrawContent();

}

public void InitializeGraph()

{

//创建指定高度和宽度的位图对象

objBitmap = new Bitmap(Width, Height);

//从位图对象中创建Graphics对象

objGraphic = Graphics.FromImage(objBitmap);

//创建指定颜色的矩形边框

objGraphic.DrawRectangle(new Pen(BorderColor, 1),0,0, Width, Height);

objGraphic.FillRectangle(new SolidBrush(BgColor),1,1, Width, Height);

//画X方向栅格并标注

int t = 0;

for (int i = Height-15; i >= 0; i -= YGrid)

{

objGraphic.DrawLine(new Pen(GridColor, 1), 50, i, Width, i);

objGraphic.DrawString(System.Convert.ToString(t*5000), new Font("宋体", 10), new SolidBrush(Color.White), 0, i);

t++;

}

//画Y方向栅格并标注

t = 0;

for (int i = 50; i < Width; i += XGrid)

{

objGraphic.DrawLine(new Pen(GridColor, 1), i, 0, i, Height-15);

objGraphic.DrawString(System.Convert.ToString(t), new Font("宋体", 10), new SolidBrush(Color.White), i, Height-13);

t++;

}

}

public void DrawContent()

{

while (KeyDots.Count > 0)

{

//设置新点坐标

CurrentPoint.X = LastPoint.X + 2;

CurrentPoint.Y = Height-System.Convert.ToInt16(KeyDots.Dequeue())-15;

objGraphic.DrawLine(new Pen(Color.Red, 2),LastPoint,CurrentPoint);

//重置最后点坐标

LastPoint = CurrentPoint;

if (LastPoint.X > Width)

{

InitializeGraph();

LastPoint.X = 50;

}

}

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: