• mschart 的时间进度移动 bar



    <asp:Chart ID="Chart5" Visible="true" BackImageAlignment="Left" RightToLeft="Inherit" runat="server" Palette="None" PaletteCustomColors="192, 192, 255; Silver" Height="100" Width="600"> <Series> <asp:Series BorderColor="Black" BorderWidth="1" BorderDashStyle="Solid" Name="Series1" ChartType="StackedBar100" BackHatchStyle="Percent20"> </asp:Series> <asp:Series Name="Series2" BorderColor="Black" BorderWidth="1" BorderDashStyle="Solid" ChartType="StackedBar100" BackHatchStyle="Percent20"> </asp:Series> </Series> <Titles>//下面的几个title就是定位的,比如竖线,2012年05月21
    <asp:Title Name="Start" Alignment="TopLeft" Text="" TextStyle="Default"> <Position Auto="false" X="0" Width="90" Height="14" Y="60" />//注意x=“0” 这个是百分比 后面的同样 y 也是百分比,设置其中的宽高可以显示跟多的字 </asp:Title>//这个定位的是开始的时间(2012年05月08日) <asp:Title Name="StartLine" Text="|"> <Position X="0" Y="55" />//这个定位的是开始的竖线(|) </asp:Title> <asp:Title Name="Progress" Text="" Alignment="MiddleLeft"> <Position X="40" Y="6" />//这个定位现在时间(2012年05月24日)下面的不多写了 </asp:Title> <asp:Title Visible="true" Name="ProgressLine" Text="|"> <Position Y="18" /> </asp:Title> <asp:Title Name="End" Text="" Alignment="TopLeft"> <Position Width="90" Height="14" X="85" Y="60" /> </asp:Title> <asp:Title Name="EndLine" Text="|"> <Position X="85" Y="55" /> </asp:Title> </Titles> <Legends> <asp:Legend BackColor="Transparent" Docking="Bottom" Alignment="Center" Font="Trebuchet MS, 8.25pt, style=Bold" IsTextAutoFit="False" Name="Default" LegendStyle="Table"> </asp:Legend> </Legends> <ChartAreas> <asp:ChartArea BackImageAlignment="Left" Name="ChartArea1" BorderColor="red" BackSecondaryColor="Transparent" BackColor="Transparent" ShadowColor="Transparent"> <Position Width="85" Height="70" />//这个很重要 width是百分比 没有设置这个的话 画图区域不会再最左边 到时定位难以定位 其中85 在cs中用到 <AxisY LineColor="64, 64, 64, 64"> <LabelStyle Font="Trebuchet MS, 8.25pt, style=Bold" IsEndLabelVisible="true" /> <MajorGrid LineColor="64, 64, 64, 64" Enabled="false" /> </AxisY> <AxisX LineColor="64, 64, 64, 64"> <LabelStyle Font="Trebuchet MS, 8.25pt, style=Bold" IsEndLabelVisible="true" TruncatedLabels="true" /> <MajorGrid LineColor="64, 64, 64, 64" Enabled="false" /> </AxisX> </asp:ChartArea> </ChartAreas> </asp:Chart>

    上面的是aspx代码  下面的是cs

    int TatolDays = GetDays(model.RegDate.ToString(), model.LastDate.ToString());
                //开始时间到现在
                int StartToProgress = GetDays(model.RegDate.ToString(), DateTime.Now.ToString());
                int ProgressToEnd = GetDays(DateTime.Now.ToShortDateString(), model.LastDate.ToString());
                string Unfinished = "已动工:" + ((double)StartToProgress / TatolDays).ToString("p") + "(" + StartToProgress + "天)";
                string Finished = "";
                if (ProgressToEnd == 0)
                {
                    Finished = "工程时间已结束!";
                }
                else
                {
                    Finished = "剩  下:" + ((double)ProgressToEnd / TatolDays).ToString("P") + "(" + ProgressToEnd + "天)";
                }
                //设置开始时间
                Chart5.Titles["Start"].Text = model.RegDate.ToString("yyyy年MM月dd日  ");
                //设置结束时间
                Chart5.Titles["End"].Text = model.LastDate.ToString("yyyy年MM月dd日  ");
    
                //设置标题移动  定位今天的时间   
                //算法
                /*
                 * 得到总工程的时间除以总工程所占的比例(前面设置的85%)  得到100%(整个画布空白的)的所有需要的工程时间
                 * 再用已完成的除以全部的就ok了
                 * **/
    
                Chart5.Titles["Progress"].Position.X = (float)(StartToProgress / (TatolDays / 0.85)) * 100;//这个0.85是在前面设置的了
                Chart5.Titles["Progress"].Text = DateTime.Now.ToString("yyyy年MM月dd日");
                // 定位今天时间的竖线
                Chart5.Titles["ProgressLine"].Position.X = (float)(StartToProgress / (TatolDays / 0.85)) * 100;
                Chart5.Series["Series1"].Name = Unfinished;
                Chart5.Series["Series2"].Name = Finished;
                Chart5.ChartAreas["ChartArea1"].AxisX.Enabled = AxisEnabled.False;
                Chart5.ChartAreas["ChartArea1"].AxisY.Enabled = AxisEnabled.False;
                //bar的这句
                Chart5.Series[Unfinished].Points.AddY(StartToProgress);//只绑定两个就行了
                Chart5.Series[Finished].Points.AddY(ProgressToEnd);
    
  • 相关阅读:
    MongoDB查询语句 (增、删、改、查)
    MongoDB简单查询语句
    jquery Select Change事件
    c# 远程监控(4) 接收端 RTP包重组 分屏显示
    c# 远程监控(3) RTP协议 RTP.NET.DLL
    c# 远程监控(1) 大纲
    c# 远程监控(2) 摄像头调研及模拟
    TortoiseGit记住用户名和密码
    winform ListView和DataGridView实现分页
    制作符合平台的CodeSmith代码生产模版
  • 原文地址:https://www.cnblogs.com/fengkuangkg/p/2511640.html
Copyright © 2020-2023  润新知