wpf – 绘制列之间没有空格的列图

wpf – 绘制列之间没有空格的列图,第1张

概述我正在使用 WPF工具包,我正在尝试渲染一个看起来像直方图的图形.特别是,我希望每列都与每个列相对应.列之间应该没有间隙. 创建列图时,您应用了许多组件. (参见下面的示例XAML).有没有人知道你是否可以在其中一个元素上设置属性,这些元素指的是列之间空白区域的宽度? <charting:Chart Height="600" Width="Auto" HorizontalAlignment="St 我正在使用 WPF工具包,我正在尝试渲染一个看起来像直方图的图形.特别是,我希望每列都与每个列相对应.列之间应该没有间隙.

创建列图时,您应用了许多组件. (参见下面的示例XAML).有没有人知道你是否可以在其中一个元素上设置属性,这些元素指的是列之间空白区域的宽度?

<charting:Chart Height="600" WIDth="auto" HorizontalAlignment="Stretch" name="MyChart"                    title="Column Graph" Legendtitle="Legend">                    <charting:ColumnSerIEs                         name="theColumnSerIEs"                        title="SerIEs A"                        IndependentValueBinding="{Binding Path=name}"                                        DependentValueBinding="{Binding Path=Population}"                        margin="0"                        >                    </charting:ColumnSerIEs>                    <charting:Chart.Axes>                        <charting:linearaxis                             OrIEntation="Y"                             Minimum="200000"                             Maximum="2500000"                             ShowGrIDlines="True" />                        <charting:categoryAxis                            name="chartcategoryAxis"                            />                    </charting:Chart.Axes>                </charting:Chart>
解决方法 在没有神奇的答案的情况下,我从codeplex下载了wpftoolkit代码.

通过阅读代码,我可以在方法ColumnSerIEs.UpdateDataPoint中看到,有这行代码:

double segmentWIDth = coordinaterangeWIDth * 0.8;

所以这是一个非常明确的“否”,你不能通过设置公共属性来改变列之间的差距.

我将尝试的解决方案是编写一个继承自ColumnSerIEs并覆盖UpdateDataPoint的新类.

稍后编辑

好的,我让它上班了.如果有人感兴趣,我附上了HistogramSerIEs类的完整代码.

public class HistogramSerIEs : ColumnSerIEs,ISerIEs{    protected overrIDe voID UpdateDataPoint(DataPoint dataPoint)    {        // That set the height and wIDth.        base.UpdateDataPoint(dataPoint);        // Now we overrIDe the part about setting the wIDth        object category = dataPoint.ActualindependentValue;        var coordinaterange = GetcategoryRange(category);        double minimum = (double)coordinaterange.Minimum.Value;        double maximum = (double)coordinaterange.Maximum.Value;        double coordinaterangeWIDth = (maximum - minimum);        const int WIDTH_MulTIPLIER = 1; // Harcoded to 0.8 in the parent. Could make this a dependency property        double segmentWIDth = coordinaterangeWIDth * WIDTH_MulTIPLIER;        var columnSerIEs = SerIEsHost.SerIEs.OfType<ColumnSerIEs>().Where(serIEs => serIEs.ActualindependentAxis == ActualindependentAxis);        int numberOfSerIEs = columnSerIEs.Count();        double columnWIDth = segmentWIDth / numberOfSerIEs;        int serIEsIndex = columnSerIEs.IndexOf(this);        double offset = serIEsIndex * Math.Round(columnWIDth) + coordinaterangeWIDth * 0.1;        double dataPointX = minimum + offset;        double left = Math.Round(dataPointX);        double wIDth = Math.Round(columnWIDth);        Canvas.Setleft(dataPoint,left);        dataPoint.WIDth = wIDth;    }    #region ISerIEs Members    System.Collections.ObjectModel.ObservableCollection<object> ISerIEs.LegendItems    {        get { return base.LegendItems; }    }    #endregion    #region IRequireSerIEsHost Members    ISerIEsHost IRequireSerIEsHost.SerIEsHost    {        get { return base.SerIEsHost;}        set { base.SerIEsHost = value; }    }    #endregion}// copIEd from the DataVisualization library// (It was an internal class)static class MyEnumerableFunctions{    public static int IndexOf(this IEnumerable that,object value)    {        int index = 0;        foreach (object item in that)        {            if (object.ReferenceEquals(value,item) || value.Equals(item))            {                return index;            }            index++;        }        return -1;    }}
总结

以上是内存溢出为你收集整理的wpf – 绘制列之间没有空格的列图全部内容,希望文章能够帮你解决wpf – 绘制列之间没有空格的列图所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/web/1005344.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存