SL-折线报表

2023-11-22 07:10
文章标签 报表 折线 sl

本文主要是介绍SL-折线报表,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

   学SL也有段时间了,中间停停走走的,耽误了不少时间,前段时间一哥们说看看年底情况如何,到他们公司去试试水,所以又拣起来弄弄,切入点就先从报表开始吧,这样做感觉比较切实际一些。

   第一篇先来一个简单的静态报表样式吧,效果图如下:

个人觉得还不错了,呵呵。。。

其实这个很简单的功能了,没有处理Y轴方向和实际数据的比值,所以测试数据的真实值都在0~600之间。

这里是前台的代码:

    

    <Canvas Height="900" Width="800" Margin=" 20 0 0 0">
<!--这里是具体的图形内容-->
<Canvas Height="600" Background="Black" Width="600" Name="canvas_Chart" Canvas.Top="0" Canvas.Left="60"></Canvas>

<!--创建左侧的数据值-->
<Grid Width="43" Height="600" Canvas.Left="0" Canvas.Top="0">
<Grid.RowDefinitions>
<RowDefinition Height="50"></RowDefinition>
<RowDefinition Height="50"></RowDefinition>
<RowDefinition Height="50"></RowDefinition>
<RowDefinition Height="50"></RowDefinition>
<RowDefinition Height="50"></RowDefinition>
<RowDefinition Height="50"></RowDefinition>
<RowDefinition Height="50"></RowDefinition>
<RowDefinition Height="50"></RowDefinition>
<RowDefinition Height="50"></RowDefinition>
<RowDefinition Height="50"></RowDefinition>
<RowDefinition Height="50"></RowDefinition>
<RowDefinition Height="50"></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBlock Text="0" Grid.Row="11" VerticalAlignment="Bottom"></TextBlock>
<TextBlock Text="50" Grid.Column="0" Grid.Row="11" VerticalAlignment="Top"></TextBlock>
<TextBlock Text="100" Grid.Column="0" Grid.Row="10" VerticalAlignment="Top"></TextBlock>
<TextBlock Text="150" Grid.Column="0" Grid.Row="9" VerticalAlignment="Top"></TextBlock>
<TextBlock Text="200" Grid.Column="0" Grid.Row="8" VerticalAlignment="Top"></TextBlock>
<TextBlock Text="250" Grid.Column="0" Grid.Row="7" VerticalAlignment="Top"></TextBlock>
<TextBlock Text="300" Grid.Column="0" Grid.Row="6" VerticalAlignment="Top"></TextBlock>
<TextBlock Text="350" Grid.Column="0" Grid.Row="5" VerticalAlignment="Top"></TextBlock>
<TextBlock Text="400" Grid.Column="0" Grid.Row="4" VerticalAlignment="Top"></TextBlock>
<TextBlock Text="450" Grid.Column="0" Grid.Row="3" VerticalAlignment="Top"></TextBlock>
<TextBlock Text="500" Grid.Column="0" Grid.Row="2" VerticalAlignment="Top"></TextBlock>
<TextBlock Text="550" Grid.Column="0" Grid.Row="1" VerticalAlignment="Top"></TextBlock>
<TextBlock Text="600" Grid.Column="0" Grid.Row="0" VerticalAlignment="Top"></TextBlock>

</Grid>
</Canvas>

后台创建数据级线段的内容:

  

//创建一系列的坐标值,即每个月的具体产值,X轴这里取的间隔是50pixel
private PointCollection pc = new PointCollection();
//主函数
public
MainPage()
{
InitializeComponent();
//创建线段
LoadLine();
//创建圆点
LoadEllipse();
//创建对应圆点的备注说明即对应的TextBlock
BiuldText();
}
private void LoadLine()
        {
            pc.Add(new Point(10, canvas_Chart.Height - 550));
            pc.Add(new Point(60, canvas_Chart.Height - 400));
            pc.Add(new Point(110, canvas_Chart.Height - 432));
            pc.Add(new Point(160, canvas_Chart.Height - 233));
            pc.Add(new Point(210, canvas_Chart.Height - 455));
            pc.Add(new Point(260, canvas_Chart.Height - 123));
            pc.Add(new Point(310, canvas_Chart.Height - 455));
            pc.Add(new Point(360, canvas_Chart.Height - 562));
            pc.Add(new Point(410, canvas_Chart.Height - 41));


            #region 创建一系列对应坐标的线段
            Polyline pl = new Polyline();
            pl.Stroke = new SolidColorBrush(Colors.Red);
            pl.StrokeThickness = 2;
            pl.Points = pc;
            RenderEffec(ref pl);
            canvas_Chart.Children.Add(pl);
            #endregion
}
//添加对应的数据节点
        private void LoadEllipse()
        {
            int i = 1;
            foreach (Point p in pc) {
                Ellipse ep = new Ellipse();
                ep.Width = ep.Height = 10;
                ep.Fill = new SolidColorBrush(Colors.White);
                ep.VerticalAlignment = System.Windows.VerticalAlignment.Top;
                ep.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
                //设置定位
                double left = p.X -ep.Width / 2;
                double top = p.Y -ep.Height / 2;
                ep.Margin = new Thickness(left, top, 0, 0);
                ToolTipService.SetToolTip(ep, string.Format("这是{0}月分的数据({1})", i, canvas_Chart.Height- p.Y));
                canvas_Chart.Children.Add(ep);
                i++;
            }
        }
//添加对应的数据节点
        private void LoadEllipse()
        {
            int i = 1;
            foreach (Point p in pc) {
                Ellipse ep = new Ellipse();
                ep.Width = ep.Height = 10;
                ep.Fill = new SolidColorBrush(Colors.White);
                ep.VerticalAlignment = System.Windows.VerticalAlignment.Top;
                ep.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
                //设置定位
                double left = p.X -ep.Width / 2;
                double top = p.Y -ep.Height / 2;
                ep.Margin = new Thickness(left, top, 0, 0);
                ToolTipService.SetToolTip(ep, string.Format("这是{0}月分的数据({1})", i, canvas_Chart.Height- p.Y));
                canvas_Chart.Children.Add(ep);
                i++;
            }
        }

先一个静态的吧,下一步做动画效果。。


转载于:https://www.cnblogs.com/netDream/archive/2012/03/10/SL_staticReport.html

这篇关于SL-折线报表的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/408414

相关文章

多线程解析报表

假如有这样一个需求,当我们需要解析一个Excel里多个sheet的数据时,可以考虑使用多线程,每个线程解析一个sheet里的数据,等到所有的sheet都解析完之后,程序需要提示解析完成。 Way1 join import java.time.LocalTime;public class Main {public static void main(String[] args) thro

BIRT报表script

1.隔行高亮显示 1. 在布局(Layout)中,选择Table-Detail的行。如下图:   2. 然后选择Script,打开脚本窗口顶部的方法列表并选择onPrepare,如图所示。 var count=0;   3. 最后打开脚本窗口顶部的方法列表并选择 onCreate,如图所示: count++; if (count % 2 != 0) {   style.se

Birt报表开发实战

我就截图描述得了,没什么含金量,看图基本明白的。 1.开始 a.创建报表文件 b.数据源配置 c.配置数据集 2.网格报表 拖拉式操作,很方便 3.预览效果 其他报表的操作也基本不难,就不扯了! 2.级联参数 官方视频教程:http://demo.actuate.com/demos/cascade/cascade.html

BIRT--商业智能和报表工具,从零开始

1.简介 BIRT (Business Intelligence and Reporting Tools), 是为 Web 应用程序开发的基于 Eclipse 的开源报表系统,特别之处在于它是以 Java 和 JavaEE 为基础。BIRT 有两个主要组件:基于 Eclipse 的报表设计器,以及部署到应用服务器上的运行时组件。 2.下载 官网下载网址:http://download.ec

BIRT 报表的自动化测试

来源:http://www.ibm.com/developerworks/cn/opensource/os-cn-ecl-birttest/如何为 BIRT 报表编写自动化测试用例 BIRT 是一项很受欢迎的报表制作工具,但目前对其的测试还是以人工测试为主。本文介绍了如何对 BIRT 报表进行自动化测试,以及在实际项目中的一些测试实践,从而提高了测试的效率和准确性 -------

十三、我们应当怎样做需求分析:查询报表分析

在我以往的用例分析中,使用这样格式的用例模式,对于大多数业务操作流程来说是得心应手的,但对于有些功能来说总感觉不对劲。感觉不对劲的,就是那些查询、汇总与报表功能。对于这部分功能,需要我们描述的不是什么操作流程,而更重要的是那些数据项、数据来源、报表格式、数据链接,以及使用者、使用频率的说明。而这些,在以往的用例说明格式中统统都没有,怎么办呢?俗话说“东西是死的人是活的”,把我们的用例格式改改吧。

Jasperreports+jaspersoft studio学习教程(八)- 报表分页和大量数据内存处理

9.1 设计报表模板 9.1.1 使用Table组件新建模板(步骤参考教程七)如下: 9.1.2 模板自带变量 $V{PAGE_NUMBER} :代表当前页数(可以是页码也可以是页数,通过TextField的计算时间的不同值来设置) $V{PAGE_COUNT} :当前页面中记录的数目 $V{groupname_COUNT} :   代表当前组的记录数 $V{COLUMN_NU

Jasperreports+jaspersoft studio学习教程(七)- 子报表Subreport(父子报表互相传值)

转载:https://blog.csdn.net/shiyun123zw/article/details/79221708 有很多人都说Jasperreports不适合中国式复杂报表,实际上运用好父子报表可以解决大部分问题了。例如下面的表。每个学生的学科数目不固定,且每个学生后有相当于小计的平均分。有点复杂度的报表,可以使用子报表解决。 8.1 设计报表模板 8.1.1 新建主模板De

报表生成---JFreeChart

JFreeChart 是一个开源的 Java 图表库,它提供了丰富的图表类型和灵活的定制选项,用于在 Java 应用程序中生成和显示图表。以下是 JFreeChart 的一些关键特点和功能: 多种图表类型:JFreeChart 支持多种图表类型,包括但不限于: 条形图(Bar charts)折线图(Line charts)饼图(Pie charts)散点图(Scatter plots)时序图(

VBA Excel 出报表

源数据 目标  PS:调休 以高亮颜色区分 整理一下 CMDBUT命令  VBA代码 Private Sub CommandButton1_Click()Dim ps As IntegerDim pe As IntegerDim srcs As IntegerDim srce As IntegerDim i As IntegerDim j As IntegerD