找回密码
 立即注册

QQ登录

只需一步,快速开始

lvGrap

初级会员

3

主题

11

帖子

350

积分

初级会员

积分
350

活字格认证

最新发帖
lvGrap
初级会员   /  发表于:2014-7-21 13:15  /   查看:6420  /  回复:4
我现在实现了interaction中的zoom功能,但是我需要用户可以恢复到原来设置。例如通过右键菜单实现undo zoom。于是我通过如下代码实现。当需要恢复zoom的时候,设置x,y,y2中scrollbar的scale为1,可以实现恢复。
问题是,我的用户不希望看到scrollbar,而scrollbar的visible属性又必须是true,否则不起作用。 请问可以怎样处理?
c1chart.Interaction.Enabled = true;
             c1chart.Interaction.Actions["Zoom"].Modifier = Keys.None;
             c1chart.Interaction.Actions["Scale"].Modifier = Keys.Control;
             c1chart.Interaction.Actions["Translate"].Modifier = Keys.Shift;
             c1chart.Interaction.Actions["Rotate"].Modifier = Keys.Alt;
             c1chart.Interaction.Actions["Zoom"].Axis = C1.Win.C1Chart.AxisFlagEnum.AxesAll;
            
             c1chart.ChartArea.AxisX.ScrollBar.Visible = true;
             c1chart.ChartArea.AxisY.ScrollBar.Visible = true;
             c1chart.ChartArea.AxisY2.ScrollBar.Visible = true;

4 个回复

倒序浏览
Alice
社区贡献组   /  发表于:2014-7-22 14:37:00
沙发
回复 1楼lvGrap的帖子

你好。使用C1Chart内置的交互方法,需要将Scrollbar的visible属性设置为True,这是内置交互的设计。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
lvGrap
初级会员   /  发表于:2014-7-22 14:54:00
板凳
回复 2楼Alice的帖子

那么能否在没有zoom的时候隐藏scrollbar,只有在执行了zoom的动作后才显示scrollbar那?我尝试在MouseDown事件中,设置scrollbar的visible属性为true,基本可以实现。但是有一个问题,当第一次试图用鼠标左键方式zoom的时候,如果鼠标移动速度比较快,scrollbar还没有完全显示(加载)完毕时,松开鼠标左键,这时候,zoom没有被执行。scrollbar的scale还是1. 之后再执行zoom动作就正常了。 您有何建议?
回复 使用道具 举报
lvGrap
初级会员   /  发表于:2014-7-22 15:09:00
地板
回复 3楼lvGrap的帖子

我重写了Transform事件,解决了这个问题
void c1chart_Transform(object sender, TransformEventArgs e)
        {
            c1chart.ChartArea.AxisX.ScrollBar.Scale = (e.MaxX - e.MinX) / (c1chart.ChartArea.AxisX.ScrollBar.Max - c1chart.ChartArea.AxisX.ScrollBar.Min);
            c1chart.ChartArea.AxisY.ScrollBar.Scale = (e.MaxY - e.MinY) / (c1chart.ChartArea.AxisY.ScrollBar.Max - c1chart.ChartArea.AxisY.ScrollBar.Min);
            c1chart.ChartArea.AxisY2.ScrollBar.Scale = (e.MaxY2 - e.MinY2) / (c1chart.ChartArea.AxisY2.ScrollBar.Max - c1chart.ChartArea.AxisY2.ScrollBar.Min);            
        }

评分

参与人数 1金币 +200 收起 理由
Alice + 200 自己解决问题,奖励200金币

查看全部评分

回复 使用道具 举报
Alice
社区贡献组   /  发表于:2014-7-23 09:08:00
5#
回复 3楼lvGrap的帖子

我重写了Transform事件,解决了这个问题
void c1chart_Tra......
lvGrap 发表于 2014-7-22 15:09:00


自己解决问题,很赞。奖励200金币。参考:金币奖励
我昨天也尝试了一个解决方法,做了个简单的例子,给你参考下。

本帖子中包含更多资源

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

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

葡萄城控件服务团队

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