c# chart控件的用法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c# chart控件的用法相关的知识,希望对你有一定的参考价值。

这是我的数据库,就是说,比如一个班就只有两个人,我想要获得这个班在一月份,二月份等等的考试最高成绩,

也就是说我要的一月得分的最高成绩是80,二月份的是80,三月份的是90,是这个意思,

这是我的代码 你看看。

ChartTest.aspx:前台代码
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ChartTest.aspx.cs" Inherits="UserManager.Test.ChartTest" %>
<%@ Register Assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
    Namespace="System.Web.UI.DataVisualization.Charting" TagPrefix="asp" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <center>
            <asp:ScriptManager ID="ScriptManager1" runat="server">
            </asp:ScriptManager>

        <asp:UpdatePanel runat="server">
          <ContentTemplate>
            <asp:Chart ID="Chart1" runat="server" Height="496px" Width="612px"  ImageLocation="~/TempImages/ChartPic_#SEQ(300,3)"
                BorderDashStyle="Solid" BackSecondaryColor="White" BackGradientStyle="VerticalCenter"
                BorderWidth="2px" BackColor="211, 223, 240" BorderColor="#1A3B69" 
                onclick="Chart1_Click">
                <Legends>
                    <asp:Legend IsTextAutoFit="False" Name="Default" BackColor="Transparent" TitleAlignment="Center"
                        Font="Trebuchet MS, 8.25pt, style=Bold">
                    </asp:Legend>
                </Legends>
                <BorderSkin SkinStyle="Emboss"></BorderSkin>
                <Series>
                </Series>
                <ChartAreas>
                    <asp:ChartArea Name="ChartArea1" BorderColor="64, 64, 64, 64" BorderDashStyle="Solid"
                        BackSecondaryColor="White" BackColor="64, 165, 191, 228" ShadowColor="Transparent"
                        BackGradientStyle="TopBottom">
                        <Area3DStyle Rotation="10" Perspective="10" Inclination="15" IsRightAngleAxes="False"
                            WallWidth="0" IsClustered="False"></Area3DStyle>
                        <AxisY LineColor="64, 64, 64, 64">
                            <LabelStyle Font="Trebuchet MS, 8.25pt, style=Bold" />
                            <MajorGrid LineColor="64, 64, 64, 64" />
                        </AxisY>
                        <AxisX LineColor="64, 64, 64, 64">
                            <LabelStyle Font="Trebuchet MS, 8.25pt, style=Bold" />
                            <MajorGrid LineColor="64, 64, 64, 64" />
                        </AxisX>
                    </asp:ChartArea>
                </ChartAreas>
                <Titles>
                    <asp:Title Text="我的一家" />
                </Titles>
            </asp:Chart>
            </ContentTemplate>
        </asp:UpdatePanel>
             </center>
    </div>
   
    </form>
</body>
</html>

 

ChartTest.aspx.cs:后台代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Web.UI.DataVisualization.Charting;

namespace UserManager.Test

    public partial class ChartTest : System.Web.UI.Page
    
        protected void Page_Load(object sender, EventArgs e)
        
            
               // this.Chart1.Click += new ImageMapEventHandler(Chart1_Click);
                Series series = new Series("年龄");
                //设置图表类型
                series.ChartType = SeriesChartType.Column;
                series.BorderWidth = 7;
                series.ShadowOffset = 2;
               
                series.Points.AddY(44);
                series.Points.AddY(43);
                series.Points.AddY(24);
                series.Points.AddY(20);
                series.Points.AddY(23);

                //X轴显示的名称
                series.Points[0].AxisLabel = "爸爸";
                series.Points[1].AxisLabel = "妈妈";
                series.Points[2].AxisLabel = "陈太汉";
                series.Points[3].AxisLabel = "陈姗";
                series.Points[4].AxisLabel = "陈晓玲";

                //顶部显示的数字
                series.Points[0].Label = "44";
                series.Points[1].Label = "43";
                series.Points[2].Label = "24";
                series.Points[3].Label = "20";
                series.Points[4].Label = "23";
                //鼠标放上去的提示内容
                series.Points[0].ToolTip = "44";
                series.Points[1].ToolTip = "43";
                series.Points[2].ToolTip = "24";
                series.Points[3].ToolTip = "20";
                series.Points[4].ToolTip = "23";

                Series series1 = new Series("其他");
                series1.ChartType = SeriesChartType.Column;
                series1.BorderWidth = 3;
                series1.ShadowOffset = 2;
               
                series1.Points.AddY(144);
                series1.Points.AddY(143);
                series1.Points.AddY(124);
                series1.Points.AddY(120);
                series1.Points.AddY(123);
               
                series1.Points[0].Label = "144";
                series1.Points[1].Label = "143";
                series1.Points[2].Label = "124";
                series1.Points[3].Label = "120";
                series1.Points[4].Label = "123";
                series1.Points[0].ToolTip = "144";
                series1.Points[1].ToolTip = "143";
                series1.Points[2].ToolTip = "124";
                series1.Points[3].ToolTip = "120";
                series1.Points[4].ToolTip = "123";
                series1.YAxisType = AxisType.Primary;
                series1.YValueType = ChartValueType.Time;
                Chart1.Series.Add(series);
                Chart1.Series.Add(series1);
                //按照升序的方式排列
                Chart1.Series[0].Sort(PointSortOrder.Ascending);
                Chart1.Series[1].Sort(PointSortOrder.Ascending);
 
                foreach(Series serie  in Chart1.Series)
                
                    serie.PostBackValue = "#AXISLABEL" + ";#INDEX";
                
             
        

       protected void Chart1_Click(object sender, ImageMapEventArgs e)
       
            string str = e.PostBackValue;
       
 
   

参考技术A 1、添加一个Chart,设置其属性为曲线图或者直接用代码设置;
2、使用随机数或者你需要的数据生成图表;

运行截图如下,详细代码及注释见附件:

希望对你有帮助,有疑问请追问或是百度Hi留言
参考技术B 关键问题是写好数据库查询的语句

SQL 语句 ,考虑下Group By
参考技术C 你要问什么吗?追问

我就是要想把最高成绩和最低成绩显示出来,就在那个框里面,上面的最高成绩和最低成绩是错的,我想要获取正确的

追答

你的数据库语句是什么?查询到什么结果?你这个曲线好像只有5月份的结果是错误的,你把你的数据库语句放数据库里运行看看结果是怎么样

C#怎样判断鼠标移动到控件上了

我在一个panel上放了几个控件,现在我要知道在panel上鼠标单击时,是否是在控件上单击还是在空白处单击了。

比如,放一个label在panel上,分别绑定label和panel的click事件
private void label1_Click(object sender, EventArgs e)

this.label1.Text += " 1";


private void panel1_Click(object sender, EventArgs e)

this.label1.Text += " 2";


这时,发现单击label时,label1上只增加了1,没有显示2,说明只响应了label的单击。
而单击panel1时,label1上只增加了2。

所以,响应panel1_click的就是单击panel的空白处了
参考技术A 用坐标来判断吧。。。

private void panel1_MouseMove(object sender, MouseEventArgs e)

int intX = e.X;
int intY = e.Y;
if (intX > 482 && intY > 54 && intX < 666 && intY < 228)

鼠标在控件一上

else if (intX > 72 && intY > 54 && intX < 328 && intY < 192)

鼠标在控件二上

else

鼠标在空白处


参考技术B 问题啊不会说,什么叫鼠标移动到控件上了,你的标题应该是鼠标c在控件上lick(按下)了没 参考技术C 控件有mouseon之类的事件,你自己看 参考技术D VF知道的不多!

以上是关于c# chart控件的用法的主要内容,如果未能解决你的问题,请参考以下文章

求C# WinForm DataGridViewRow 控件的用法 要常用的 详细点 谢谢

C# Dictionary 用法;

c#中关于splitContainer控件的用法:如何做到不清除控件就能在panel2中打开一个窗体呢?

C# WPF开源控件库HandyControl用法举例

C# WPF GridControl用法举例

VS2010 Chart控件Chart控件在ASP.NET网站中的应用示例详解(C#语言)