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

/// <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();
}

时间: 2024-09-24 15:45:58

C#如何用Graphics画出一幅图表的相关文章

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

//获取坐标         private void Form2_MouseMove(object sender, MouseEventArgs e)         {             this.Text=string.Format("X={0},Y={1}",e.X,e.Y);         }        /// <summary>         /// 绘制折线图         /// </summary>         /// &l

在c#中如何用gdi+ 画出柱形图,和饼形图,能不能提供点详细的代码?

问题描述 在c#中如何用gdi+画出柱形图,和饼形图,能不能提供点详细的代码? 解决方案 解决方案二:Bitmapbmp=newBitmap(Width,Height);Graphicsg=Graphics.FromImage(bmp);g.DrawEllipse(//画饼图g.DrawRectangle(//画柱形图g.DrawLine(//画线随手写的,参考一下吧.

如何用PS画出机器人大白

  最近以男子扮大白,向女友告白,而且成功了,让大白再次成为又萌又暖心的代表.不过,扮大白还是需要很坚强的心的,如果能画出大白,然后再写上自己想告白的话,是不是也会提高告白成功的概率呢.现在就让小编教大家如何用PS画出大白的方法. 分类: PS入门教程

如何用photoshop画制一幅科幻题材的概念场景气氛图

  如何用photoshop画制一幅科幻题材的概念场景气氛图,从画面的前期构思,画面构图.色彩运用.质感描绘,光影表现等角度进行详细讲解,非常棒的分享,大图更高清,值得借鉴 分类: PS图片处理

如何用swing画出这样类似饼状的图案

问题描述 如何用swing画出这样类似饼状的图案 这是一个演示队列的程序,方块的颜色会随着数字的移动,我想问一下是要用一个类描绘还是怎么实现.

图像处理-请教各位大神,如何用python提取出两幅图像中不同的部分?

问题描述 请教各位大神,如何用python提取出两幅图像中不同的部分? 1C 各位朋友们好,我有一张图片1.png另一张图片2.png图片1与图片2只有一部分不相同的部分,现在我想以图片1为参照物,把图片2中与图片1中不同的部分裁剪出来形成图片3请教各位做图像处理的大神们应该怎么做,或者有相关的论文可以看的麻烦推荐一下,小白刚入手,还请指点一下,万分感谢,在此先谢过各位朋友们. 解决方案 你可以尝试调用 OpenCV 中的接口,我记得是有个拼接的功能 如果需要源代码方面的话,你可以参考hugin

gps-现在有GPS坐标,如何用java画出这些坐标的轨迹图

问题描述 现在有GPS坐标,如何用java画出这些坐标的轨迹图 已有LONLAT的坐标图,请问有什么API可以推荐一下,能够画出轨迹图的草图 谢谢 解决方案 查看百度地图,高德地图,GOOGLE地图API 解决方案二: 用百度地图api试试吧

求解答-如何用C++画出图像。。。。。

问题描述 如何用C++画出图像..... 如何用C++画出图像...................例如y=x*x 解决方案 用 matlab 画出心的图像 解决方案二: cout<<"y=x*x" ; 解决方案三: http://wenku.baidu.com/link?url=ibjOGgWu_FMZ2NUj6_jhLApXwQyYTRALRnonq5kdUiL9OqJe5Yg5hobKBdbx-otKGl3yNo1sdHndPs1Kq-y1Hgwlexx5lMg4t6

马云近日挥毫泼墨,画出一幅马体画

12月19日消息,马云近日挥毫泼墨,画出一幅"马体"画,并称不会有第二个人画出同样的画,包括画家自己.马云同时宣布该画将会在19日网上拍卖,所得款项将会捐助给淘宝"魔豆"公益项目. 对于马云的绘画作品,网友褒贬不一,有网友评论称,马云画的是"风云雄霸天下" :也有网友评论称其实画的是马云自己"天马行空,不知所云――马云":更有网友表示,其实画的是塔防游戏.