2019年01月21日 11:57
原创作品,转载时请务必以超链接形式标明文章原始出处,否则将追究法律责任。
本节说一下简单的图表,当然作为不怎么挣钱的项目,你就能简就减。大多数时候在公司做事,你是一定要精益求精,尽善尽美。因为那是你体现你实力的时候,你做的烂了,大家就不怎么信任你。但是在接的私活方面,因为别人会压价,你报价1万,人家压到8000,否则不给你做。这些活有时候会被一些小年轻做了,那些人技术不管咋样,但是有精力,能折腾。折腾出来的东西也许能用。所以8000就8000呗,羊毛出在羊身上。1万块的实现和8000的实现自然不是一个档次,能用就是标准。
先看一下图,无图无真相。
我们就随便看一个,疗养情况统计。
这里展示本年度没有参加疗养的人员和参加疗养的人员的比例,当你点击参加疗养的部分时,就会展示这些人的信息。
首先我们看一下代码
<Base:WindowBase x:Class="HealthyInfomation.Windows.UserControl.RecuperationInformationAnalysis" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:HealthyInfomation.Windows.UserControl" xmlns:Base="clr-namespace:HealthyInformation.FrameWork;assembly=HealthyInformation.FrameWork" mc:Ignorable="d" xmlns:converter="clr-namespace:HealthyInfomation.Converter" ResizeMode="NoResize" WindowStartupLocation="CenterScreen" Title="疗养信息统计" Height="700" Width="650"> <Base:WindowBase.Resources> <converter:SexUIConverter x:Key="SexUIConverter"></converter:SexUIConverter> </Base:WindowBase.Resources> <Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto"></RowDefinition> <RowDefinition Height="Auto"></RowDefinition> </Grid.RowDefinitions> <Grid x:Name="AnalysisChart" Height="350" Width="600"></Grid> <DataGrid x:Name="DG_Detail" Grid.Row="1" RowHeight="25" Width="600" Height="300" HorizontalScrollBarVisibility="Auto" AutoGenerateColumns="False" CanUserAddRows="False" CanUserDeleteRows="False" Cursor="Hand" Margin="10,0,10,0" AlternatingRowBackground="#CCCCCC"> <DataGrid.Columns> <DataGridTextColumn Header="姓名" Binding="{Binding Name, Mode=OneWay}" MinWidth="70"/> <DataGridTextColumn Header="性别" Binding="{Binding Sex, Mode=OneWay,Converter={StaticResource SexUIConverter}, ConverterParameter=1}" MinWidth="40"/> <DataGridTextColumn Header="部门" Binding="{Binding TroopsType, Mode=OneWay}" MinWidth="100"/> <DataGridTextColumn Header="职别" Binding="{Binding JobTitle, Mode=OneWay}" MinWidth="80"/> <DataGridTextColumn Header="疗养院" Binding="{Binding SanatoriumName, Mode=OneWay}" MinWidth="120"/> <DataGridTextColumn Header="计划入院日期" Binding="{Binding HospitalEnterDate, Mode=OneWay,StringFormat=yyyy-MM-dd HH:mm:ss}" MinWidth="120"/> <DataGridTextColumn Header="计划出院日期" Binding="{Binding HospitalLeaveDate, Mode=OneWay,StringFormat=yyyy-MM-dd HH:mm:ss}" MinWidth="120"/> </DataGrid.Columns> </DataGrid> </Grid> </Base:WindowBase>
UI代码so easy,不再赘述。为了让该页面剧中屏幕,需设置WindowStartupLocation = 'CenterScreen'。至于这个饼图,我们是用代码画出来的。
public partial class RecuperationInformationAnalysis : WindowBase { RecuperationInformationFacade facade; public RecuperationInformationAnalysis() { InitializeComponent(); facade = new RecuperationInformationFacade(this); InitData(); } private async void InitData() { var result = await facade.GetRecuperationAnalysisCountResult(); this.AnalysisChart.CreateChartPie(string.Concat(DateTime.Now.Year, "年度疗养人员统计"), new List<string> { "未参加疗养人员", "参加疗养人员" } , new List<string> { (result.TotalCont - result.AppendCount).ToString(), result.AppendCount.ToString() }, 600, 340, dataPoint_MouseLeftButtonDown); } private async void dataPoint_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { if ((sender as DataPoint).Tag.ToString() == "参加疗养人员") { var result = await facade.GetRecuperationAnalysisResult(); this.DG_Detail.ItemsSource = result; } } }
拿到数据,绘制饼图。点击饼图,在下方DataGrid就会展示详细人员信息。看一下这个绘制饼图的类,当然从网上抄来的,自己研究这个没必要。
public static void CreateChartPie(this Grid grid, string name, List<string> valuex, List<string> valuey, int width = 500, int height = 300, MouseButtonEventHandler handler = null) { //创建一个图标 Chart chart = new Chart(); //设置图标的宽度和高度 chart.Width = width; chart.Height = height; chart.Margin = new Thickness(0, 5, 0, 5); //是否启用打印和保持图片 chart.ToolBarEnabled = true; //设置图标的属性 chart.ScrollingEnabled = false;//是否启用或禁用滚动 chart.View3D = true;//3D效果显示 //创建一个标题的对象 Title title = new Title(); //设置标题的名称 title.Text = name; title.Foreground = new SolidColorBrush(Colors.Orange); title.Padding = new Thickness(0, 10, 5, 0); //向图标添加标题 chart.Titles.Add(title); // 创建一个新的数据线。 DataSeries dataSeries = new DataSeries(); // 设置数据线的格式 dataSeries.RenderAs = RenderAs.Pie;//柱状Stacked // 设置数据点 DataPoint dataPoint; for (int i = 0; i < valuex.Count; i++) { // 创建一个数据点的实例。 dataPoint = new DataPoint(); // 设置X轴点 dataPoint.AxisXLabel = valuex[i]; dataPoint.LegendText = "##" + valuex[i]; //设置Y轴点 dataPoint.YValue = double.Parse(valuey[i]); dataPoint.Tag = valuex[i]; //添加一个点击事件 if (handler != null) { dataPoint.MouseLeftButtonDown += handler; } //添加数据点 dataSeries.DataPoints.Add(dataPoint); } // 添加数据线到数据序列。 chart.Series.Add(dataSeries); //将生产的图表增加到Grid,然后通过Grid添加到上层Grid. grid.Children.Add(chart); }
OK,再看一个界面。
今天就到这里,想要demo必须掏银子。
发表评论
匿名
用户评论
暂无评论