c# - 当由于滚动而出现长标签时,图表正在重新缩放轴标签的区域
问题描述
我有一些字符串标签,每个标签都与一个数字相关联。我创建了一个Chart
元素,其中一个ChartArea
和一个Series
使用该SeriesChartType.Bar
类型在 x 轴上显示我的标签(令人困惑的是,使用该Bar
类型时它是垂直轴,但无论如何......)并将数字显示为旁边的酒吧。
由于我有许多标签无法同时显示在屏幕上,因此我使用事件处理程序Zoom
中的方法“启用”滚动条,如下所示:Paint
private void chart1_Paint(object sender, PaintEventArgs e)
{
var scaleView = chart1.ChartAreas.First().AxisX.ScaleView;
var pos = double.IsNaN(scaleView.Position) ? 0.0 : scaleView.Position;
scaleView.Zoom(pos, pos + chart1.Height / 22.0);
}
我不知道这是否是正确的方法,但它(几乎)做了我想要的:
- 如果有太多数据点(标签)无法显示在屏幕上,则显示滚动条
- 调整窗口大小时正确更新可见区域
只有一件烦人的事情:如果由于滚动长标签出现在可视区域或消失,标签占用的区域被调整为最长的可视标签。我希望这些屏幕截图能解释我的意思:
这在滚动过程中非常烦人,因为每当长标签出现或消失时,所有内容都会重新缩放。
如何修复标签占用的区域以始终适合系列中最长的标签,无论它当前是否可见?我尝试IsLabelAutoFit = false
了 x 轴和 y 轴,但这没有帮助。
解决方案
好的,我明白了。我用了
chartArea.InnerPlotPosition.Auto = false;
InnerPlotPosition.X = 33.333;
将图表区域的三分之一分配给标签,将另外三分之二分配给条形图。
InnerPlotPosition.Auto = false
使其修复,使其在滚动时不会更新。
推荐阅读
- python - 如何在单击 CSV 文件中列出的多个页面的按钮后抓取表格?硒,蟒蛇
- python - 如何以更少的延迟动态格式化dict的嵌套列表
- python - 登录屏幕 kivy/kivymd
- tensorflow - Tensorflow 1.2.1:AttributeError:模块'tensorflow'没有属性'random'
- c# - 如何使用 Scaffold-DbContext 只生成 DBContext 或 Tables
- c# - 无法创建 SSL/TLS 安全通道“http://www.rtvs.sk/televizia/archiv”
- python - 使用函数名作为命令
- java - 使用 Java 的 volatile 关键字的不一致
- c# - Httpclienthandler Webproxy 值没有改变
- c++ - 当例程“free”在 C++ 中的“try”块中失败时会发生什么