一个人如何设置文本的图表图例对象中的定位? 我已经尝试使用:
myChartName.Legends["mySeriesName"].Alignment = stringAlignment.Near
由于没有效果。 我也试着创建自定义图例项,再次造成任何影响。 文本总是居中(连同一系列标记物)在图例中的“盒子”。 我已经能够对准唯一的文本是冠军,但我不需要在我的应用程序的标题。
我的研究至今说,传说的对象基本上是与(默认),两个小区的表。 如果是这样的情况下,应该有访问这些细胞,并操纵它们作为表格单元格的方式。 那么,是什么原因呢? 为什么我不能访问传说对象的文本对齐属性? 显然,有什么我失踪,但对我的生活中,我似乎无法想出解决办法。 很令人沮丧。
问题解决了。 定制项目的做法是行不通的两种,所以我尝试使用LegendCellColumn类。
我从列改变了LegendStyle到行,然后添加了两个CellColumns,一个为系列符号和一个图例文本。 设置对齐,页边距和列的宽度(即原来是特技),瞧; 一个传说,看起来像我想要的。 这是一个有类似问题的人的代码。
chartSel.Legends[ySeries.Name].CellColumns.Add(new LegendCellColumn("", LegendCellColumnType.SeriesSymbol, ""));
chartSel.Legends[ySeries.Name].CellColumns[0].Alignment = ContentAlignment.TopLeft;
chartSel.Legends[ySeries.Name].CellColumns[0].Margins = new System.Windows.Forms.DataVisualization.Charting.Margins(0, 0, 1, 1);
chartSel.Legends[ySeries.Name].CellColumns[0].MinimumWidth = 250;
chartSel.Legends[ySeries.Name].CellColumns[0].MaximumWidth = 250;
chartSel.Legends[ySeries.Name].CellColumns.Add(new LegendCellColumn("", LegendCellColumnType.Text, ySeries.Name));
chartSel.Legends[ySeries.Name].CellColumns[1].Alignment = ContentAlignment.MiddleLeft;
chartSel.Legends[ySeries.Name].CellColumns[1].Margins = new System.Windows.Forms.DataVisualization.Charting.Margins(0, 0, 1, 1);
chartSel.Legends[ySeries.Name].CellColumns[1].MinimumWidth = 1500;
chartSel.Legends[ySeries.Name].CellColumns[1].MaximumWidth = 1500;
它可能不是做最有效的方式,但它的作品。 从技术上讲,传说符号和文字仍然集中在物体,但因为我迫使两列的宽度有被左对齐的外观。
我们希望,这可以帮助其他新手像我这样避免恐慌的日子。
我的理解是, Legend
对准涉及Docking
财产,文字是不是真的怎么传说中的对齐。 因此,设置Alignment
到附近来定位传说箱附近的Docking
方向。
这是十分困难的文本上解释这个问题。 在MS图表示例有一个名为款Chart features -> Legends -> Style and Auto Positioning
,这将有助于你与这两个性能发挥,并了解它们是如何打算工作。
对于内部传说对齐,您可能需要使用Legend.CustomItems
和定义LegendCell
独立。
chart.Legends["Default"].CustomItems.Clear();
chart.Legends["Default"].CustomItems.Add(new LegendItem("LegendItem", Color.Red, ""));
chart.Legends["Default"].CustomItems[0].Cells.Add(new LegendCell(LegendCellType.Text, "My text", ContentAlignment.MiddleLeft));
这里面描述Chart features -> Legends -> Legend Cells
的样品的截面。
在继续揣摩这一点我无意中发现了这个珍闻从下面的MSDN库页面信息的:
http://msdn.microsoft.com/en-us/library/dd456711(v=vs.100).aspx
“注意:您不能调整Chart.Legends集合中的个人传奇物品和细胞对它们进行调整,使用自定义图例项。”
所以,回到定制项目路线。 我得到这个代码从几个来源(包括你,多米尼克,谢谢)收集:
chartSel.Legends.Add(ySeries.Name);
chartSel.Series[ySeries.Name].IsVisibleInLegend = false;
chartSel.Legends[ySeries.Name].CustomItems.Clear();
LegendItem li = new LegendItem();
li.ImageStyle = LegendImageStyle.Line;
li.Cells.Add(LegendCellType.SeriesSymbol, "", ContentAlignment.TopLeft);
li.Cells[0].BackColor = Color.CornflowerBlue; //color is only to see the cell bounds
li.Cells.Add(LegendCellType.Text, ySeries.Name, ContentAlignment.TopLeft);
li.Cells[1].BackColor = Color.Aquamarine; //color is only to see the cell bounds
chartSel.Legends[ySeries.Name].CustomItems.Add(li);
从我能找到它应该工作,但事实并非如此。 它导致具有两个单元的图例对象; 第一个是空的,第二个左对齐文本。 我曾经试图发布它的一个形象,但系统说我没有值得。
为什么没有线的系列符号也是一个谜,但是这是要解决的另一个问题。 该文本对齐问题是我目前的主要关切。 它看起来像细胞中的文本左对齐如所期望的,但细胞本身在图例对象为中心的 不是我想要的。 我想在这些对象细胞中左对齐了,所以第一个单元格是对传说对象的左边缘。
想法?