先看图: 开始时先在PS上画,然后在实现.但生成的标题似乎不是太理想...继续研究中... 下面是对应的.cs文件代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Drawing.Drawing2D; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button5_Click(object sender, EventArgs e) { //画背景、边框 Graphics g = this.CreateGraphics(); g.CompositingQuality = CompositingQuality.HighSpeed; g.InterpolationMode = InterpolationMode.HighQualityBicubic; Pen BorderPen=new Pen(GetColor(this.comboBox1.SelectedItem.ToString())); g.DrawRectangle(BorderPen, new Rectangle(20, 20, 650, 360)); LinearGradientBrush backgroundBrush = GetGradientBrush(this.comboBox2.SelectedItem.ToString()); g.FillRectangle(backgroundBrush, new Rectangle(21, 21, 649, 359)); //画Y轴刻度线 Rectangle FGX; int fgxnum = 88; int XYNUM = 100; for (int i = 0; i <21; i++) { if (i==0||i%5==0) { FGX = new Rectangle(48, fgxnum, 35, 2); g.DrawString(XYNUM.ToString(), new Font("宋体", 10), new SolidBrush(ColorTranslator.FromHtml("#8fa0c2")), 22, fgxnum - 5); } else { FGX = new Rectangle(64, fgxnum, 20, 2); g.DrawString(XYNUM.ToString(), new Font("宋体", 8), new SolidBrush(ColorTranslator.FromHtml("#a3b6dc")), 42, fgxnum - 5); } g.DrawRectangle(new Pen(ColorTranslator.FromHtml("#dfe7ef"), 3), FGX); g.FillRectangle(Brushes.White, FGX); fgxnum += 12; XYNUM += 20; } //获取用户输入的数据 并判断是否符合标准 string[] Data=textBox2.Text.Split(','); foreach (string arg in Data) { //不可为空 不可小于300 或 大于900 if (String.IsNullOrEmpty(arg) || Convert.ToInt32(arg) < 100 || Convert.ToInt32(arg) > 325) { MessageBox.Show("内容不可为空,需要在100到325之间,并且用,分割"); return; } } string[] Xingqi = new string[7] { "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天" }; int IndexX = 85; int IndexY = 85; for (int i = 0; i < Data.Length; i++) { g.DrawLine(new Pen(ColorTranslator.FromHtml("#c2def0"), 3), IndexX, IndexY,IndexX+60, int.Parse(Data[i])); GrapText(g, "●", 30, IndexX + 60- 12, int.Parse(Data[i]) - 20, "#b7c6d7"); //画数据值 if (i % 2 != 0) { GrapText(g, Data[i], 18, IndexX + 45, int.Parse(Data[i]) - 25, "#b7c6d7"); } else { GrapText(g, Data[i], 18, IndexX + 45, int.Parse(Data[i]) + 10, "#b7c6d7"); } //画星期号 g.DrawString(Xingqi[i], new Font("Arial", 12), new SolidBrush(ColorTranslator.FromHtml("#a5b2cc")), IndexX + 25, 342); IndexX += 70; IndexY = int.Parse(Data[i]); } //画X轴 Y轴竖线 Rectangle Xzhou = new Rectangle(85, 75, 4, 260); Rectangle Yzhou = new Rectangle(85, 332,540,4); g.DrawRectangle(new Pen(ColorTranslator.FromHtml("#d9e2eb"),3),Xzhou); g.DrawRectangle(new Pen(ColorTranslator.FromHtml("#c2def0"), 3), Yzhou); g.FillRectangle(Brushes.White, Xzhou); g.FillRectangle(Brushes.White, Yzhou); //画标题 GrapText(g, String.IsNullOrEmpty(textBox1.Text) ? "Data View Title" : textBox1.Text, 42, 200, 30, "#546c88"); //画字符 GrapText(g, "◆", 20, 72, 60,"#b7c6d7"); GrapText(g, "◆", 20, 610,320,"#b7c6d7"); } /// <summary> /// 选择边框色 /// </summary> /// <param name="args">颜色名称</param> /// <returns>选中颜色</returns> private Color GetColor(string args) { if (args == "蓝色") return ColorTranslator.FromHtml("#409de6"); else if (args == "黑色") return Color.Black; else if (args == "红色") return Color.Red; else if (args == "黄色") return Color.Yellow; return ColorTranslator.FromHtml("#b8bcc4"); } /// <summary> /// 选择背景色 /// </summary> /// <param name="args">颜色名称</param> /// <returns>选中颜色</returns> private LinearGradientBrush GetGradientBrush(string args) { if (args == "青绿色") return new LinearGradientBrush(new Point(20,20), new Point(650, 430), ColorTranslator.FromHtml("#9dfa87"), ColorTranslator.FromHtml("#a3ddae")); else if (args == "淡红色") return new LinearGradientBrush(new Point(20, 20), new Point(650, 430), ColorTranslator.FromHtml("#f9d4d4"), ColorTranslator.FromHtml("#fceee9")); return new LinearGradientBrush(new Point(400,430), new Point(400,20), ColorTranslator.FromHtml("#ffffff"), ColorTranslator.FromHtml("#d6e7fa")); } private void GrapText(Graphics obj, string Contents,int size,int argX,int argY,string cors){ GraphicsPath myGraphicsPath = new GraphicsPath(); myGraphicsPath.AddString(Contents, new FontFamily("Impact"), 0, size, new PointF(argX, argY), new StringFormat()); obj.DrawPath(new Pen(ColorTranslator.FromHtml(cors),2), myGraphicsPath); obj.FillPath(Brushes.White, myGraphicsPath); } private void Form1_Load(object sender, EventArgs e) { this.comboBox1.SelectedItem = this.comboBox1.Items[0]; this.comboBox2.SelectedItem = this.comboBox2.Items[0]; } } }