如何克隆微软图表控件?
Posted
技术标签:
【中文标题】如何克隆微软图表控件?【英文标题】:How can I clone microsoft chart control? 【发布时间】:2013-07-26 06:38:21 【问题描述】:克隆 Microsoft Chart Control 对象的推荐方法是什么?因为是第三方库,所以无法使用mentioned here的解决方案,因为无法将对象标记为可序列化。
最好,我不想引入任何第三方控件来克隆图表,除非如果没有一个绝对不可能这样做。
【问题讨论】:
为什么需要克隆图表? @EricBrown 我正在实现一个功能,用户可以双击现有图表以在其上生成“详细视图”,这意味着我首先需要获取现有图表的相同副本然后在克隆图表上添加/修改属性。 【参考方案1】:这并不能完全回答您的问题,但它可以帮助您实现您的功能。您可以使用Chart
控件的Drill Down
功能来生成用户单击的图表部分的详细视图。参考mschart的samples environment。
【讨论】:
感谢您的建议,但不完全是我想要的。除了详细视图之外,我仍然需要克隆图表,它恰好是其中之一。【参考方案2】:您不需要将其标记为可序列化,因为图表已经具备序列化的能力。查看此MS Charts 文档了解更多信息
从这里,您可以将图表序列化为字符串,然后立即将字符串反序列化为图表对象的新实例。这将类似于克隆,并且似乎是您的问题中提到的答案正在做的事情。这可能不是最有效的方法,但它会起作用
编辑
此代码未经测试,但应该可以工作(对于如何完成此操作相当准确)
Chart chart1 = new Chart();
//Enter your chart building code here
System.IO.MemoryStream myStream = new System.IO.MemoryStream();
Chart chart2 = new Chart();
chart1.Serializer.Save(myStream);
chart2.Serializer.Load(myStream);
【讨论】:
很抱歉,但这与克隆有什么关系? 更新了答案,发现我误解了问题 天哪,这么简单的方法!非常感谢。 惊人、简单、准确。 在我的图表被复制到流中后,向系列添加新点没有更新 xaxis 最小值和最大值。他们返回了 NaN,找不到原因,因此修复了检查最小值是否为 NaN 的情况,在这种情况下调用 chart.ChartAreas[0].RecalculateAxesScale();以上是关于如何克隆微软图表控件?的主要内容,如果未能解决你的问题,请参考以下文章