C# WinForm开发系列之chart控件画折线图和柱形图并自定义鼠标移动到数据标记点显示提示信息

 

https://blog.csdn.net/dannyiscoder/article/details/70768230
分类专栏: C#基础知识 C#控件知识 文章标签: c# 控件 布局 winform
版权
1.首先拖动chart控件到窗体,设置chart1的属性Legends中默认的Legend1的Enable为false;

2.设置Series的ChartType为Line

3.后台绑定数据

 List<string> xData = new List<string>() { "A", "B", "C", "D" };
 List<int> yData = new List<int>() { 10, 20, 30, 40 };
 chart1.Series[0]["PieLabelStyle"] = "Outside";//将文字移到外侧
 chart1.Series[0]["PieLineColor"] = "Black";//绘制黑色的连线。
 chart1.Series[0].Points.DataBindXY(xData, yData);

4.chant控件自带的信息提示为ToolTip(映射区),如图1所示:

图1

5.在窗体加载中可通过如下代码定义需要显示的提示信息,代码如下:

 private void Form3_Load(object sender, EventArgs e)
 {
            List<string> xData = new List<string>() { "1", "2", "3", "4" };
            List<int> yData = new List<int>() { 10, 20, 30, 40 };
            //线条颜色
            chart1.Series[0].Color = Color.Green;
            //线条粗细
            chart1.Series[0].BorderWidth = 2;
            //标记点边框颜色      
            chart1.Series[0].MarkerBorderColor = Color.Blue;
            //标记点边框大小
            chart1.Series[0].MarkerBorderWidth = 3; //chart1.;// Xaxis 
            //标记点中心颜色
            chart1.Series[0].MarkerColor = Color.White;//AxisColor
            //标记点大小
            chart1.Series[0].MarkerSize = 8;
            //标记点类型     
            chart1.Series[0].MarkerStyle = MarkerStyle.Circle;   

    //需要提示的信息    
            chart1.Series[0].ToolTip = "当前年份:#VAL\n最高分:#MAX\n最低分:#Min";


            //将文字移到外侧
            chart1.Series[0]["PieLabelStyle"] = "Outside";
            //绘制黑色的连线
            chart1.Series[0]["PieLineColor"] = "Black";
            chart1.Series[0].Points.DataBindXY(xData, yData);
 }


6.效果如下图2,3所示:

图2

图3

注:为了自定义提示信息的样式,我自己定义了一个提示框,通过如下方法进行显示

7.在form窗体上画提示框,(使用两个panel合并三个label),效果如图4所示:

图4

8.使用chart控件的工具提示事件,如图5所示:

图5

9.(1)初始窗体方法中隐藏自定义提示信息,代码如下:

public Form3()
{
      InitializeComponent();
      this.panel1.Visible = false;
}

(2)在窗体加载方法里绑定鼠标悬停工具提示事件,代码如下:

 private void Form3_Load(object sender, EventArgs e)
{
       //悬停工具提示事件
       chart1.GetToolTipText += new EventHandler<ToolTipEventArgs>(chart1_GetToolTipText);

       List<string> xData = new List<string>() { "1", "2", "3", "4" };
       List<int> yData = new List<int>() { 10, 20, 30, 40 };
       //线条颜色
       chart1.Series[0].Color = Color.Green;
       //线条粗细
       chart1.Series[0].BorderWidth = 2;
       //标记点边框颜色      
       chart1.Series[0].MarkerBorderColor = Color.Blue;
       //标记点边框大小
       chart1.Series[0].MarkerBorderWidth = 3; //chart1.;// Xaxis 
       //标记点中心颜色
       chart1.Series[0].MarkerColor = Color.White;//AxisColor
       //标记点大小
       chart1.Series[0].MarkerSize = 8;
       //标记点类型     
       chart1.Series[0].MarkerStyle = MarkerStyle.Circle;//MarkerStyle.Circle;
       //将文字移到外侧
       chart1.Series[0]["PieLabelStyle"] = "Outside";
       //绘制黑色的连线
       chart1.Series[0]["PieLineColor"] = "Black";
       chart1.Series[0].Points.DataBindXY(xData, yData);
 }

(3)悬停工具提示事件方法如下代码:

//在具体事件处理函数中给出处理方法 
/*用chart的mousemove时间,实时跟踪鼠标最近的X轴的位置,然后把cursorX设置到那个位置上,

让用户知道我是选的那一个X的值,同时用tooltip显示该X轴上所有的Y值*/
void chart1_GetToolTipText(object sender, ToolTipEventArgs e)
{

      //判断鼠标是否移动到数据标记点,是则显示提示信息
      if (e.HitTestResult.ChartElementType == ChartElementType.DataPoint)
      {
           int i = e.HitTestResult.PointIndex;
           DataPoint dp = e.HitTestResult.Series.Points[i];
           //分别显示x轴和y轴的数值,其中{1:F3},表示显示的是float类型,精确到小数点后3位。                     
           string r = string.Format("次数:{0};数值:{1} ", dp.XValue, dp.YValues[0]);

           //鼠标相对于窗体左上角的坐标
            Point formPoint = this.PointToClient(Control.MousePosition);
            int x = formPoint.X;
            int y = formPoint.Y;
            //显示提示信息
    this.panel1.Visible = true;
            this.panel1.Location = new Point(x, y);
            this.label3.Text = r;
            }

    //鼠标离开数据标记点,则隐藏提示信息
            else {
                this.panel1.Visible = false;
            }
 }

7.当鼠标移动到不同数据标记点是的提示效果如图6,7所示:

图6

图7


————————————————
版权声明:本文为CSDN博主「想念-忘记了」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/dannyiscoder/article/details/70768230

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C# Winform中的Chart控件可以制作旋转的3D柱形图,以下是制作步骤: 1. 创建一个Winform应用程序,添加一个Chart控件。 2. 将Chart控件ChartAreas属性设置为3D,设置Chart控件的BorderStyle为FixedSingle。 3. 添加数据源并设置图表类型为柱形图,设置数据的X和Y的值。 4. 将Chart控件的Series属性的ChartType属性设置为Column,并设置MarkerStep属性为1,这样每个数据都会有一个柱形。 5. 设置Chart控件的Series属性的IsValueShownAsLabel属性为true,这样每个柱形上都会显示其对应的数值。 6. 设置Chart控件的Series属性的CustomProperties属性,设置其属性值为“DrawingStyle=Cylinder”和“PointWidth=1”,这样柱形就会变成圆柱形。 7. 设置Chart控件ChartAreas属性的Area3DStyle属性,设置其属性值为“Enable3D=true”、“Inclination=40”、“Rotation=30”、“Perspective=10”和“WallWidth=0”,这样图表就会显示3D效果。 8. 最后运行程序,就可以看到旋转的3D柱形图了。 下面是一个示例代码,供参考: ```csharp //添加数据源 this.chart1.Series.Clear(); this.chart1.Titles.Clear(); this.chart1.Series.Add("Series1"); this.chart1.Series[0].ChartType = SeriesChartType.Column; this.chart1.Series[0].Points.AddXY("A", 10); this.chart1.Series[0].Points.AddXY("B", 20); this.chart1.Series[0].Points.AddXY("C", 30); this.chart1.Series[0].Points.AddXY("D", 40); //设置柱形样式 this.chart1.Series[0].IsValueShownAsLabel = true; this.chart1.Series[0].CustomProperties = "DrawingStyle=Cylinder,PointWidth=1"; //设置3D效果 this.chart1.ChartAreas[0].Area3DStyle.Enable3D = true; this.chart1.ChartAreas[0].Area3DStyle.Inclination = 40; this.chart1.ChartAreas[0].Area3DStyle.Rotation = 30; this.chart1.ChartAreas[0].Area3DStyle.Perspective = 10; this.chart1.ChartAreas[0].Area3DStyle.WallWidth = 0; ``` 希望对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值