c# - WPF 图表工具包 - 更改区域系列颜色的不透明度

标签 c# wpf wpf-controls wpftoolkit

我需要面积系列图表,如下所示:enter image description here

我成功隐藏了两个轴并将颜色更改为渐变画笔。 我仍然需要帮助来更改不透明度,以便绿色的将位于橙色的“后面”。 另外 - 如何更改图表上的小点? 如何将背景更改为透明? 如何隐藏图表标题?

现在看起来像这样:

enter image description here

任何帮助将不胜感激!

这是我的 xaml 代码:

    <LinearGradientBrush x:Key="GreenGradientBrush" StartPoint="0.5,0" EndPoint="0.5,1">
        <LinearGradientBrush.GradientStops>
            <GradientStop Color="#77b31a" Offset="0.75"></GradientStop>
            <GradientStop Color="#85d805" Offset="0.45"></GradientStop>
        </LinearGradientBrush.GradientStops>
    </LinearGradientBrush>

    <LinearGradientBrush x:Key="OrangeGradientBrush" StartPoint="0.5,0" EndPoint="0.5,1">
        <LinearGradientBrush.GradientStops>
        <GradientStop Color="#fff92900" Offset="0.75"></GradientStop>
            <GradientStop Color="#ffff6115" Offset="0.45"></GradientStop>
        </LinearGradientBrush.GradientStops>
    </LinearGradientBrush>

    <Style x:Key="GreenAreaSeriesStyle" TargetType="Control">
        <Setter Property="Background" Value="{StaticResource GreenGradientBrush}" />
        <Setter Property="Opacity" Value="1"></Setter>
    </Style>
    <Style x:Key="OrangeAreaSeriesStyle" TargetType="Control">
        <Setter Property="Background" Value="{StaticResource OrangeGradientBrush}" />
        <Setter Property="Opacity" Value="1"></Setter>
    </Style>

    <datavis:ResourceDictionaryCollection x:Key="MyPalette">
        <ResourceDictionary>
            <Style x:Key="DataPointStyle" BasedOn="{StaticResource GreenAreaSeriesStyle}" TargetType="Control" >
            </Style>
        </ResourceDictionary>
        <ResourceDictionary>
            <Style x:Key="DataPointStyle" BasedOn="{StaticResource OrangeAreaSeriesStyle}" TargetType="Control" >
            </Style>
        </ResourceDictionary>
    </datavis:ResourceDictionaryCollection>

    <Style x:Key ="PerformanceChartMajorTickMarkStyle" TargetType="Line">
        <Setter Property="Visibility" Value="Collapsed" />
    </Style>

</Window.Resources>
 <charting:Chart Palette="{StaticResource MyPalette}" HorizontalAlignment="Left" Margin="39,38,0,0" Name="chart1" Title="Chart Title" VerticalAlignment="Top" Width="815" Height="598" OverridesDefaultStyle="False">            
        <charting:Chart.LegendStyle>
                <Style TargetType="datavis:Legend">
                    <Setter Property="Width" Value="0" />
                </Style>
        </charting:Chart.LegendStyle>

        <charting:AreaSeries Name="Green" DependentValuePath="Value" IndependentValuePath="Key" ItemsSource="{Binding}"  IsSelectionEnabled="True" >
            <charting:AreaSeries.IndependentAxis>
                <charting:CategoryAxis Orientation="X" Visibility="Hidden"/>
            </charting:AreaSeries.IndependentAxis>
            <charting:AreaSeries.DependentRangeAxis>
                <charting:LinearAxis Orientation="Y" Visibility="Hidden"/>
            </charting:AreaSeries.DependentRangeAxis>

        </charting:AreaSeries>
        <charting:AreaSeries Name="Orange" DependentValuePath="Value" IndependentValuePath="Key" ItemsSource="{Binding}"  IsSelectionEnabled="True">
            <charting:AreaSeries.IndependentAxis>
                <charting:CategoryAxis Orientation="X" Visibility="Hidden"/>
            </charting:AreaSeries.IndependentAxis>
            <charting:AreaSeries.DependentRangeAxis>
                <charting:LinearAxis Orientation="Y" Visibility="Hidden"/>
            </charting:AreaSeries.DependentRangeAxis>
        </charting:AreaSeries>
    </charting:Chart>

最佳答案

我发布了一个类似的问题并得到了以下答案,这对我很有帮助。

<ch:Chart Margin="56,21,50,72" Title="MyChart" DataContext="{Binding ElementName=Window, Mode=OneWay}"  Style="{StaticResource controlStyle}" >

                <ch:AreaSeries Name="DefaultArea" ItemsSource="{Binding Path=Key}" IndependentValueBinding="{Binding Key}" DependentValueBinding="{Binding Value}" Opacity="1" Title="111111" >
                    <ch:AreaSeries.Style>
                        <Style TargetType="ch:AreaSeries">
                            <Setter Property="IsTabStop" Value="False"/>
                            <Setter Property="Template">
                                <Setter.Value>
                                    <ControlTemplate TargetType="ch:AreaSeries">
                                        <Canvas x:Name="PlotArea">
                                            <Path Data="{TemplateBinding Geometry}" StrokeThickness="3" Fill="Pink" Style="{TemplateBinding PathStyle}" Opacity="1" />
                                        </Canvas>
                                    </ControlTemplate>
                                </Setter.Value>
                            </Setter>
                        </Style>
                    </ch:AreaSeries.Style>
                </ch:AreaSeries>

                <ch:AreaSeries Name="PersonnelArea" ItemsSource="{Binding Path=Key}" IndependentValueBinding="{Binding Key}" DependentValueBinding="{Binding Value}" Opacity="1" >
                    <ch:AreaSeries.Style>
                        <Style TargetType="ch:AreaSeries">
                            <Setter Property="IsTabStop" Value="False"/>
                            <Setter Property="Template">
                                <Setter.Value>
                                    <ControlTemplate TargetType="ch:AreaSeries">
                                        <Canvas x:Name="PlotArea">
                                            <Path Data="{TemplateBinding Geometry}" StrokeThickness="3" Fill="Yellow" Style="{TemplateBinding PathStyle}" Opacity="1" />
                                        </Canvas>
                                    </ControlTemplate>
                                </Setter.Value>
                            </Setter>
                        </Style>
                    </ch:AreaSeries.Style>

                </ch:AreaSeries>  
            </ch:Chart>

您还可以在XAML中将样式设置为Ressource,然后在后面的代码中动态分配它。 这是我原来的问题及其答案: WPF AreaSeries: How to change background opacity?

关于c# - WPF 图表工具包 - 更改区域系列颜色的不透明度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14756941/

相关文章:

c# - 从枚举属性获取枚举

C#一次性题

c# - 如何转换字符串数据:audio/ogg;base64 to file wav in C#

c# - 无法读取 Datagrid WPF 中嵌套的自定义列表框值

WPF 复选框状态不会在固定页面中更新

c# - WPF ListViewItem 项目复选框。如何获取所有选中的项目?

mvvm - 在ComboBox中显示的当前值

c# - 解决方案中存在冲突的对象名称

wpf - 像 VLC 一样的音量 slider

c# - wpf中的DialogResult问题