用的是C#winform,数据库用的是sql sever 2008想要做一个这样的功能:
text框是血压值,点击button就可以保存到数据库中,然后界面有曲线图(趋势图)表现出来,类似这样:
数据保存这部分做好了,曲线图这部分不知道怎么下手,希望大佬们帮帮我(真挚的感谢)
根据血压情况的曲线图
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- a little 栗子 2020-06-04 17:28关注
int pbHeight = PBth.Height, pbWidtht = PBth.Width;
Graphics g = PBth.CreateGraphics();
try
{
//清空图片背景色
g.Clear(Color.White);
DateTime ssss = DateTime.Parse(DtpTH.Text.ToString());
Font font = new System.Drawing.Font("Arial", 9, FontStyle.Regular);
Font font1 = new System.Drawing.Font("宋体", 20, FontStyle.Regular);
Font font2 = new System.Drawing.Font("Arial", 8, FontStyle.Regular);
LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0, 0, pbWidtht, pbHeight), Color.Blue, Color.Blue, 1.2f, true);
g.FillRectangle(Brushes.AliceBlue, 0, 0, pbWidtht, pbHeight);
Brush brush1 = new SolidBrush(Color.Blue);
Brush brush2 = new SolidBrush(Color.SaddleBrown);g.DrawString(cobRo.SelectedItem+"节点"+ DtpTH.Text.ToString() + "温湿度变化折线图", font1, brush1, new PointF(pbWidtht/2-250, 30)); //画图片的边框线 g.DrawRectangle(new Pen(Color.Blue), 0, 0, pbWidtht - 1, pbHeight - 1); Pen mypen = new Pen(brush, 1); Pen mypen2 = new Pen(Color.Red, 2); //绘制线条 //绘制纵向线条 int Ww = (pbWidtht - 100) / 24; int x = 60; for (int i = 0; i < 24; i++) { g.DrawLine(mypen, x, 80, x, 331); x = x + Ww; } Pen mypen1 = new Pen(Color.Blue, 3); //x = 60; g.DrawLine(mypen1,60, 82, 60, 331); //绘制横向线条 int y = 106; for (int i = 0; i < 10; i++) { g.DrawLine(mypen, 60, y, x, y); y = y + 25; } // y = 106; g.DrawLine(mypen1, 60, y - 25, x, y - 25); //x轴 String[] n = { "0时", "1时", "2时", "3时", "4时", "5时", "6时", "7时", "8时", "9时", "10时", "11时", "12时", "13时", "14时", "15时", "16时", "17时", "18时", "19时", "20时", "21时", "22时", "23时" }; x = 45; for (int i = 0; i < 24; i++) { g.DrawString(n[i].ToString(), font, Brushes.Black, x, 348); //设置文字内容及输出位置 x = x + Ww; } //y轴 String[] m = { "50","45", "40", "35", "30", "25", "20", "15", "10", "5","0" }; y = 98-25; for (int i = 0; i < 11; i++) { g.DrawString(m[i].ToString(), font, Brushes.Black, 35, y); //设置文字内容及输出位置 y = y + 25; } conn.Open(); string cmdtxt2 = "select * from remote_THinfo where remote_address='" + cobRo.SelectedItem + "' and addTime between '"+ ssss.ToString("yyyy/MM/dd") + " 00:00:01' and '" + ssss.ToString("yyyy/MM/dd") + " 23:59:59'"; SqlDataAdapter da = new SqlDataAdapter(cmdtxt2, conn); DataTable dt = new DataTable("remote_THinfo"); da.Fill(dt); int PointNum = dt.Rows.Count; if (PointNum < 2) { return; } int[] Count1 = new int[PointNum]; int[] Count2 = new int[PointNum]; //温湿度 for (int i = 0; i < PointNum; i++) { Count1[i] = int.Parse(dt.Rows[i]["Temperature"].ToString()); Count2[i] = int.Parse(dt.Rows[i]["Humidity"].ToString()); } //显示折线效果 Font font3 = new System.Drawing.Font("Arial", 10, FontStyle.Bold); SolidBrush mybrush = new SolidBrush(Color.Red); Point[] points1 = new Point[PointNum]; for (int i = 0; i < PointNum; i++) { points1[i].X = 60 + Ww * i; points1[i].Y = 331 - Count1[i] * 5; g.DrawString(Count1[i].ToString() + "℃", font3, Brushes.Red, 58 + i * Ww, points1[i].Y - 20); } g.DrawLines(mypen2, points1); //绘制折线 Pen mypen3 = new Pen(Color.Green, 2); Point[] points2 = new Point[PointNum]; for (int i = 0; i < PointNum; i++) { points2[i].X = 60 + i * Ww; points2[i].Y = 331 - Count2[i] * 5; g.DrawString(Count2[i].ToString() + "%", font3, Brushes.Green, 61 + i * Ww, points2[i].Y - 15); } g.DrawLines(mypen3, points2); //绘制折线 //绘制标识 g.DrawRectangle(new Pen(Brushes.Red), pbWidtht / 2 - 155, 390, 250, 50); //绘制范围框 g.FillRectangle(Brushes.Red, pbWidtht / 2 - 50, 402, 20, 10); //绘制小矩形 g.DrawString("温度", font2, Brushes.Red, pbWidtht / 2 - 30, 400); g.FillRectangle(Brushes.Green, pbWidtht / 2 - 50, 422, 20, 10); g.DrawString("湿度", font2, Brushes.Green, pbWidtht / 2 - 30, 420); System.IO.MemoryStream ms = new System.IO.MemoryStream(); } catch (Exception ex) { tools.WriteLog(ex,""); } finally { conn.Close(); g.Dispose(); //PBth.Dispose(); } ![图片说明](https://img-ask.csdn.net/upload/202006/04/1591262895_436067.png)
解决 无用评论 打赏 举报
悬赏问题
- ¥15 如何在炒股软件中,爬到我想看的日k线
- ¥15 51单片机中C语言怎么做到下面类似的功能的函数(相关搜索:c语言)
- ¥15 seatunnel 怎么配置Elasticsearch
- ¥15 PSCAD安装问题 ERROR: Visual Studio 2013, 2015, 2017 or 2019 is not found in the system.
- ¥15 (标签-MATLAB|关键词-多址)
- ¥15 关于#MATLAB#的问题,如何解决?(相关搜索:信噪比,系统容量)
- ¥500 52810做蓝牙接受端
- ¥15 基于PLC的三轴机械手程序
- ¥15 多址通信方式的抗噪声性能和系统容量对比
- ¥15 winform的chart曲线生成时有凸起