C#如何用Graphics画出一幅图表

简介: /// /// 绘制折线图/// /// ///  private void Form2_Paint(object sender, PaintEventArgs e){//首先确定原点Point centerPoint=new Point(180,340);//自定义一个带有箭头的画笔Pen pen = new Pen(Color.

/// <summary>
/// 绘制折线图
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>

private void Form2_Paint(object sender, PaintEventArgs e)
{
//首先确定原点
Point centerPoint=new Point(180,340);
//自定义一个带有箭头的画笔
Pen pen = new Pen(Color.Black,1);
pen.EndCap = System.Drawing.Drawing2D.LineCap.ArrowAnchor;
//得到当前窗体的Graphics对象
Graphics g = e.Graphics;
//X轴和Y
//g.DrawLine(pens.Black,centerPoint,new Point(centerPoint.X+600,centerPoint.Y));
//g.DrawLine(Pens.Black, centerPoint, new Point(centerPoint.X, 40));
g.DrawLine(pen, centerPoint, new Point(centerPoint.X + 650, centerPoint.Y));
g.DrawLine(pen, centerPoint, new Point(centerPoint.X, 20));
//绘制X轴的点
for (int i = 0; i < 12; i++)
{
g.DrawLine(Pens.Black, new Point(centerPoint.X + (i + 1) * 50, centerPoint.Y), new Point(centerPoint.X + (i + 1) * 50, centerPoint.Y-5));
g.DrawString((i + 1).ToString() + "", this.Font, Brushes.Black, new PointF((centerPoint.X + (i + 1) * 50) - 7, centerPoint.Y + 3));
}
g.DrawString("X:月份",this.Font,Brushes.Black,new Point(828,355));
//绘制Y轴的点
for (int i = 0; i < 12; i++)
{
g.DrawLine(Pens.Black, new Point(centerPoint.X, centerPoint.Y - (i + 1) * 25), new Point(centerPoint.X + 5, centerPoint.Y-(i + 1) * 25));
//g.DrawLine(Pens.Black, new Point(centerPoint.X , centerPoint.Y), new Point(centerPoint.X + (i + 1) * 50, centerPoint.Y - 5));
g.DrawString(string.Format("{0}",(i+1)*10), this.Font, Brushes.Black, new PointF((centerPoint.X + 5) - 35, (centerPoint.Y - (i + 1) * 25)-5));
}

//计算十二个月销售额对应的坐标点
double[] data = { 56.2, 66.3, 98.4, 34.5, 55.6, 87.3, 81.4, 33.3, 46.4, 34.6, 114.5, 80.4};
PointF[] dataPoint = new PointF[data.Length];
for (int i = 0; i < data.Length ; i++)
{
float y = (float)(340 - data[i] * 2.5);
float x = centerPoint.X + (i + 1) * 50;
PointF point = new PointF(x, y);
dataPoint[i] = point;
}
//绘制十二个点的折线
for (int i = 0; i < data.Length ; i++)
{
g.DrawRectangle(Pens.Black, dataPoint[i].X, dataPoint[i].Y, 2, 2);
}

//将十二个点串成线
g.DrawLines(Pens.Black, dataPoint);

//方法二:Path方法
//GraphicsPath path = new GraphicsPath();//要导入using System.Drawing.Drawing2D;
//for (int i = 0; i < data.Length; i++)
//{
// path.AddRectangle(new RectangleF(dataPoint[i], new SizeF(2, 2)));
//}
//path.AddLines(dataPoint);
//g.DrawPath(Pens.Black, path);


g.DrawString("Y", this.Font, Brushes.Black, new Point(155,7));
g.DrawString("销售额:单位(万元)", this.Font, Brushes.Black, new Point(14, 14));
g.DrawString("某工厂某产品年度销售额图表",this.Font, Brushes.Black, new Point(420,14));
pen.Dispose();
}

相关文章
|
7月前
|
存储
QT图形视图框架绘制曲线图和Smith图
QT图形视图框架绘制曲线图和Smith图
125 0
|
2月前
|
数据可视化 计算机视觉 Python
opencv可视化学习笔记(一):绘制多图在一个画布上
这篇文章介绍了如何使用OpenCV和PIL库将多张图片绘制在同一个画布上,并提供了具体的Python代码实现。
30 0
opencv可视化学习笔记(一):绘制多图在一个画布上
|
3月前
|
图形学
利用Graphics画出一幅图表绘制折线图
("某工厂某产品年度销售额图表",this.Font, Brushes.Black, new Point(420,14)); pen.Dispose();
20 0
|
7月前
|
前端开发 API vr&ar
Android开发之OpenGL绘制三维图形的流程
即将连载的系列文章将探索Android上的OpenGL开发,这是一种用于创建3D图形和动画的技术。OpenGL是跨平台的图形库,Android已集成其API。文章以2D绘图为例,解释了OpenGL的3个核心元素:GLSurfaceView(对应View)、GLSurfaceView.Renderer(类似Canvas)和GL10(类似Paint)。通过将这些结合,Android能实现3D图形渲染。文章介绍了Renderer接口的三个方法,分别对应2D绘图的构造、测量布局和绘制过程。示例代码展示了如何在布局中添加GLSurfaceView并注册渲染器。
202 1
Android开发之OpenGL绘制三维图形的流程
如何用ggplot2绘制基因功能富集气泡图?
如何用ggplot2绘制基因功能富集气泡图?
|
API 计算机视觉
【OpenCV图像处理3】绘制基本图形
【OpenCV图像处理3】绘制基本图形
104 0
|
机器学习/深度学习 算法 数据可视化
R绘图案例|基于分面的面积图绘制
R绘图案例|基于分面的面积图绘制
10869 0
|
数据可视化
【视觉基础篇】15 # 如何用极坐标系绘制有趣图案?
【视觉基础篇】15 # 如何用极坐标系绘制有趣图案?
170 0
【视觉基础篇】15 # 如何用极坐标系绘制有趣图案?
|
前端开发
Delphi绘图功能[1] —— 入门(绘制直线和矩形)
Delphi绘图功能[1] —— 入门(绘制直线和矩形)
504 0
Delphi绘图功能[1] —— 入门(绘制直线和矩形)
|
C# 图形学
C#编程-135:Graphics绘制三维饼状图
C#编程-135:Graphics绘制三维饼状图
151 0
C#编程-135:Graphics绘制三维饼状图