找回密码
 立即注册

QQ登录

只需一步,快速开始

zfkingth

最新发帖
zfkingth
注册会员   /  发表于:2014-7-17 23:03:00
11#
我在axisCanvas中画了个矩形
如图:

为什么矩形边框的粗细与坐标轴的不一致呢?

代码为
  private ChartPanel cp = new ChartPanel();
//......
if (c1Chart.Data.Children.Count > 0)
            {
                cp.Children.Clear();

                var obj = new ChartPanelObject();


                var rect = c1Chart.View.AxisX.GetAxisRect();



                Rectangle rectangle = new Rectangle();//矩形对象
                //属性设置,填充颜色、边粗细、边颜色、宽、高等
                rectangle.StrokeThickness = c1Chart.View.AxisX.AxisLine.StrokeThickness;
                rectangle.Stroke = c1Chart.View.AxisX.AxisLine.Stroke;
                rectangle.Width = rect.Width;
                rectangle.Height = rect.Height;
                //矩形对象相对于父容器对象Canvas的位置,左边距、上边距
                Canvas.SetLeft(rectangle, 0);
                Canvas.SetTop(rectangle, 0);


                obj.Content = rectangle;


                obj.Action = ChartPanelAction.None;

                cp.Children.Add(obj);


                if (c1Chart.View.Layers.Contains(cp) == false)
                    c1Chart.View.Layers.Add(cp);



                cp.SetValue(Canvas.LeftProperty, rect.Left);
                cp.SetValue(Canvas.TopProperty, rect.Top);

                cp.Height = rect.Height;
                cp.Width = rect.Width;

            }

        }

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2014-7-18 10:18:00
12#
解决了,
    private ChartPanel cp = new ChartPanel();
   private void handleDraw()
        {
            if (c1Chart.Data.Children.Count > 0)
            {
                cp.Children.Clear(......
zfkingth 发表于 2014-7-17 21:27:00


谢谢你给我们反馈解决方法。
这种自我解决问题的能力和精神很赞。赠送200金币作为奖励。参照:金币奖励

评分

参与人数 1满意度 +5 收起 理由
zfkingth + 5 谢谢你们的服务。

查看全部评分

请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
zfkingth
注册会员   /  发表于:2014-7-18 17:15:00
13#

在WPF中完全实现了,思想也就是之前说的,利用ChartPanel 和ChartPanelObject,添加Canvas作为ChartPanelObject的content,设置ChartPanel的附加属性
   cp.SetValue(Canvas.LeftProperty, rect.Left);
                cp.SetValue(Canvas.TopProperty, rect.Top)
需要注意的是在第一个serail的PlotElementLoaded 事件中完成
并在AnnoCreated事件中隐藏自动生成的label

        void AxisX_AnnoCreated(object sender, AnnoCreatedEventArgs e)
        {
            //hide auto label
            var txtblock = e.Label as TextBlock;
            txtblock.Foreground = e.Canvas.Background;


        }

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2014-7-18 17:47:00
14#
回复 13楼zfkingth的帖子

非常赞。
此贴要作为精华帖。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
12
您需要登录后才可以回帖 登录 | 立即注册
返回顶部