我目前正在使用DevExpress ChartControl,其中几个窗格垂直堆叠在一起。窗格可以在运行时单独显示或隐藏,但它们的内容在创建后不会更改。我想删除窗格之间的所有空格,以便每个窗格的边框与窗格上方/下方的窗格边框完全齐平。
我已经使用以下代码将PaneDistance设置为0,这通常会完全符合我的要求:
XYDiagram diagram = chartControl1.Diagram as XYDiagram;
diagram.PaneDistance = 0;
然而,我遇到的问题,在下面的屏幕显示中可见,我的y轴上的标签有时可以垂直地延伸到窗格边缘的上方或下方,这迫使我的窗格之间有空间
前两个窗格之间根本没有空间,这正是我想要的,但问题可以在底部的窗格上看到。第二个窗格上的“0”标签略微延伸到表格下方,因此添加了空白区域以使其适合。底部的两个轴都具有延伸到其窗格之外的标签,因此即使添加了更多空间。
我已经尝试过编辑我能想到的这些轴的每个属性,但没有任何东西可以删除这个空白区域。看起来只是让外部标签向上或向下推,这样它们就可以在窗格高度内完成。任何人都有任何想法,我怎么能这样工作?
编辑:我会在这个应用程序的另一部分提到,我有一组不同的面板,水平旋转和对齐,轴标签做我想让他们做的事情上面的案例:
您可以看到“0”和“300”标签稍微偏离中心位置以适合自己的窗格,因此它们不会向外延伸并创建空白区域。我没有触及任何代码来实现这一点。可能是因为这些都是同一轴的实例,而那些不这样做的是不同的轴,这使得它们在这种情况下发挥得很好?
编辑2:
这是我将轴SideMarginsValue
设置为0并将AlwaysShowZeroLevel
设置为false后得到的结果。越来越近了!
答案 0 :(得分:1)
如果你无法通过DX图表的公共属性实现所需,那么你仍然可以尝试一种技巧。
在浏览器中选择检查图表区域(Chrome中的CTRL + SHIFT + I)并查找实际图表的元素或父元素,并查看DX已分配给它们的类/ ID。
然后选择最近的元素类/ id并尝试通过分配负边距/填充来使用它的css:
.dxtcLite.dxtc-top .dxtc-stripContainer {
margin-botton: -2px!important;
}
这当然是一个肮脏的解决方案,但有时它是唯一可行的解决方案。
但是,如果图表窗格之间没有任何HTML类型的边距/填充,但空白区域实际上是生成的图表图像的一部分,那么您可能唯一能做的就是继续使用DX图表影响实际图表图像生成的属性。
<强>更新强>
您是否尝试将Range.SideMarginsValue属性设置为0?
diagram.AxisY.WholeRange.SideMarginsValue = 0;
另一种选择是尝试始终使用隐藏0级轴标签 WholeRange.AlwaysShowZeroLevel:
diagram.AxisY.WholeRange.AlwaysShowZeroLevel = false;
或尝试设置轴值的最大值以排除边框标签:
// depending on possible min/max values for each pane
diagram.AxisY.WholeRange.SetMinMaxValues(5, 35 );
如果上述任何内容有帮助,请告诉我。