C1Chart for WPF标题居中以及坐标轴单位标签

在为C1Chart for WPF添加自定义标题、坐标轴单位标签以及旋转坐标轴注释这篇文章里,介绍了在WPF平台下添加自定义的标题。但有人提出希望标题剧中,坐标轴单位标签放到特定位置。本文在上一篇文章的基础上,改造Sample,达到需要的效果。1.标题剧中有两种方法可以让标题居中,第一种是使用WPF的绑定和Convert。将显示标题的TextBlockTranslateTransform.X向左平移,放置中间。为了达到这个效果,需要将C1Chart的宽度除以二,然后绑定给TextBlockTranslateTransform.X。第二种方式,就是直接从C#代码,计算向左偏移的位置,然后赋值给TextBlockTranslateTransform.X. 2.坐标单位标签将X轴的标签放在X轴的位置,将Y轴的单位标签放在Y轴的位置。需要将TextBlock放在Axis.Title中。

发布于 2014/08/16 00:00

ComponentOne Enterprise

为C1Chart for WPF添加自定义标题、坐标轴单位标签以及旋转坐标轴注释这篇文章里,介绍了在WPF平台下添加自定义的标题。但有人提出希望标题剧中,坐标轴单位标签放到特定位置。本文在上一篇文章的基础上,改造Sample,达到需要的效果。

1.标题剧中

有两种方法可以让标题居中,第一种是使用WPF的绑定和Convert。将显示标题的TextBlockTranslateTransform.X向左平移,放置中间。为了达到这个效果,需要将C1Chart的宽度除以二,然后绑定给TextBlockTranslateTransform.X。

XMAL代码参考:

<textblock horizontalalignment="Center" dockpanel.dock="Top" text="2014年度报表">                        
<textblock.rendertransform>
<translatetransform x="{Binding Path=ActualWidth,ElementName=c1Chart1,Converter={StaticResource widthConverter}}" />                       
</textblock.rendertransform>                    
</textblock>

Converter代码:

[ValueConversion(typeof(double), typeof(double))]
    public class TitileAlignmentConvert : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            double width = 0;
            if (double.TryParse(value.ToString(), out width))
            {
                width = width  / 2;
            }
            return width;
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return value;
        }
    }

 

第二种方式,就是直接从C#代码,计算向左偏移的位置,然后赋值给TextBlockTranslateTransform.X.

代码参考:

private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            TranslateTransform f = new TranslateTransform();
            f.X = (this.c1Chart1.ActualWidth - this.chartTitle.ActualWidth) / 2;
            this.chartTitle.RenderTransform = f;
        }

 

2.坐标单位标签

将X轴的标签放在X轴的位置,将Y轴的单位标签放在Y轴的位置。需要将TextBlock放在Axis.Title中。

拿Y轴举例,代码参考:

<c1:C1Chart.View> 
              <c1:ChartView>                     
                  <c1:ChartView.AxisY>
                         <c1:Axis>
                            <c1:Axis.Title>
                                 <TextBlock Text="单位:万元" TextAlignment="Center" Foreground="Crimson"/> 
                          </c1:Axis.Title> 
                      </c1:Axis> 
                  </c1:ChartView.AxisY> 
              </c1:ChartView> 
          </c1:C1Chart.View>

运行起来效果如下图所示:

Sample如下: 

c1chart_titleCenter.zip (4.35 mb)

ComponentOne Enterprise | 下载试用

ComponentOne 是一套专注于企业 .NET开发、支持 .NET Core 平台,并完美集成于 Visual Studio 的第三方控件集,包含 300 多种 .NET开发控件,提供表格数据管理、数据可视化、报表和文档、日程安排、输入和编辑、导航和布局、系统提升工具等七大功能,被誉为“.NET开发的‘瑞士军刀’”。

ComponentOne 为您提供专业的产品咨询服务,并由技术支持工程师为您1对1解答。>> 发帖提问

相关产品
推荐相关案例
关注微信
葡萄城社区二维码

关注“葡萄城社区”

加微信获取技术资讯

加微信获取技术资讯

想了解更多信息,请联系我们, 随时掌握技术资源和产品动态