WPF DevExpress 设置雷达图Radar样式

简介: DevExpress中定义的ChartControl很不错,很多项目直接使用这种控件。 本节讲述雷达图的样式设置 ...

 

DevExpress中定义的ChartControl很不错,很多项目直接使用这种控件。

本节讲述雷达图的样式设置

    <Grid>
        <Grid.Resources>
            <DataTemplate x:Key="LabelItemDataTemplate" DataType="dxc:SeriesLabelItem">
                <Border CornerRadius="8" Padding="8,1" Background="Transparent">
                    <!--<Border.Background>
                            <Binding Path="Color">
                            <Binding.Converter>
                            <dxc:BrushOverlayConverter/>
                            </Binding.Converter>
                            </Binding>
                        </Border.Background>-->
                    <TextBlock Text="{Binding Text}"/>
                </Border>
            </DataTemplate>
        </Grid.Resources>
        <dxc:ChartControl Background="Transparent" BorderBrush="Transparent" BorderThickness="0" ToolTipEnabled="True">
            <dxc:RadarDiagram2D x:Name="RadarDiagram2D" DomainBrush="Transparent" ShapeStyle="Circle" RotationDirection="Clockwise" DomainBorderBrush="#FF0885FF">
                <dxc:RadarDiagram2D.AxisY>
                    <dxc:RadarAxisY2D GridLinesBrush="#FF0885FF" GridLinesMinorVisible="False" Brush="Transparent">
                        <dxc:RadarAxisY2D.NumericScaleOptions>
                            <dxc:ContinuousNumericScaleOptions AutoGrid="False" GridSpacing="20" GridOffset="0" ></dxc:ContinuousNumericScaleOptions>
                        </dxc:RadarAxisY2D.NumericScaleOptions>
                        <dxc:RadarAxisY2D.Label>
                            <dxc:AxisLabel Visible="False"></dxc:AxisLabel>
                        </dxc:RadarAxisY2D.Label>
                        <dxc:RadarAxisY2D.WholeRange>
                            <dxc:Range AutoSideMargins="False"></dxc:Range>
                        </dxc:RadarAxisY2D.WholeRange>
                    </dxc:RadarAxisY2D>
                </dxc:RadarDiagram2D.AxisY>
                <dxc:RadarDiagram2D.AxisX>
                    <dxc:RadarAxisX2D GridLinesBrush="#FF0885FF">
                        <dxc:RadarAxisX2D.Label>
                            <dxc:AxisLabel Foreground="White" Staggered="False">
                            </dxc:AxisLabel>
                        </dxc:RadarAxisX2D.Label>
                    </dxc:RadarAxisX2D>
                </dxc:RadarDiagram2D.AxisX>
                <dxc:RadarDiagram2D.Series>
                    <dxc:RadarAreaSeries2D Transparency="0.7" Brush="GreenYellow">
                        <dxc:RadarAreaSeries2D.MarkerModel>
                            <dxc:CustomMarker2DModel>
                                <dxc:CustomMarker2DModel.PointTemplate>
                                    <ControlTemplate TargetType="dxc:CustomModelControl">
                                        <Ellipse Width="4" Height="4" Fill="GreenYellow"></Ellipse>
                                    </ControlTemplate>
                                </dxc:CustomMarker2DModel.PointTemplate>
                            </dxc:CustomMarker2DModel>
                        </dxc:RadarAreaSeries2D.MarkerModel>
                        <dxc:RadarAreaSeries2D.Label>
                            <dxc:SeriesLabel Visible="True" ConnectorVisible="False" ElementTemplate="{StaticResource LabelItemDataTemplate}" 
                                    Indent="0" dxc:CircularSeries2D.Angle="0"></dxc:SeriesLabel>
                        </dxc:RadarAreaSeries2D.Label>
                        <dxc:SeriesPoint Argument="C#" Value="95" Tag="30"></dxc:SeriesPoint>
                        <dxc:SeriesPoint Argument="Java" Value="20" Tag="100" />
                        <dxc:SeriesPoint Argument="Python" Value="60" Tag="30" />
                        <dxc:SeriesPoint Argument="Ruby" Value="80" Tag="20"/>
                        <dxc:SeriesPoint Argument="VB.Net" Value="50" Tag="0"/>
                        <dxc:SeriesPoint Argument="VBA" Value="90" Tag="62" />
                    </dxc:RadarAreaSeries2D>
                </dxc:RadarDiagram2D.Series>
            </dxc:RadarDiagram2D>
        </dxc:ChartControl>
    </Grid>
View Code

1、先设置主体,首先背景设置成透明

    ShapeStyle="Polygon"是设置雷达图的形状,Polygon指多边形,Circle就是圆圈了。

   RotationDirection="Clockwise",指是数据否顺时针显示

2、设置AxisY  

    <dxc:RadarDiagram2D.AxisY>
        <dxc:RadarAxisY2D GridLinesBrush="#FF0885FF" GridLinesMinorVisible="False" Brush="Transparent">
            <dxc:RadarAxisY2D.NumericScaleOptions>
                <dxc:ContinuousNumericScaleOptions AutoGrid="False" GridSpacing="20" GridOffset="0" ></dxc:ContinuousNumericScaleOptions>
            </dxc:RadarAxisY2D.NumericScaleOptions>
            <dxc:RadarAxisY2D.Label>
                <dxc:AxisLabel Visible="False"></dxc:AxisLabel>
            </dxc:RadarAxisY2D.Label>
            <dxc:RadarAxisY2D.WholeRange>
                <dxc:Range MinValue="0" MaxValue="100" AutoSideMargins="False"></dxc:Range>
            </dxc:RadarAxisY2D.WholeRange>
        </dxc:RadarAxisY2D>
    </dxc:RadarDiagram2D.AxisY>
GridLinesMinorVisible设置是否补充线条,
AutoGrid="False" GridSpacing="20"设置刻度间隔
dxc:AxisLabel Visible="False"这个可以设置是否显示Y刻度
Range 当然就是范围了,默认不设置也没问题

3、设置AxisX
    <dxc:RadarDiagram2D.AxisX>
        <dxc:RadarAxisX2D GridLinesVisible="True" Interlaced="False" GridLinesMinorVisible="False" GridLinesBrush="#FF0885FF">
            <dxc:RadarAxisX2D.Label>
                <dxc:AxisLabel Foreground="White"> 
                </dxc:AxisLabel>
            </dxc:RadarAxisX2D.Label>
        </dxc:RadarAxisX2D>
    </dxc:RadarDiagram2D.AxisX>
GridLinesBrush设置中间交叉线的颜色。
dxc:AxisLabel设置数据标题的样式
4、数据
    <dxc:RadarDiagram2D.Series>
        <dxc:RadarAreaSeries2D Transparency="0.7" Brush="GreenYellow">
            <dxc:RadarAreaSeries2D.MarkerModel>
                <dxc:CustomMarker2DModel>
                    <dxc:CustomMarker2DModel.PointTemplate>
                        <ControlTemplate TargetType="dxc:CustomModelControl">
                            <Ellipse Width="4" Height="4" Fill="GreenYellow"></Ellipse>
                        </ControlTemplate>
                    </dxc:CustomMarker2DModel.PointTemplate>
                </dxc:CustomMarker2DModel>
            </dxc:RadarAreaSeries2D.MarkerModel>
            <dxc:RadarAreaSeries2D.Label>
                <dxc:SeriesLabel Visible="True" ConnectorVisible="False" ElementTemplate="{StaticResource LabelItemDataTemplate}" 
                                    Indent="0" dxc:CircularSeries2D.Angle="0"></dxc:SeriesLabel>
            </dxc:RadarAreaSeries2D.Label>
            <dxc:SeriesPoint Argument="C#" Value="95" Tag="30"></dxc:SeriesPoint>
            <dxc:SeriesPoint Argument="Java" Value="20" Tag="100" />
            <dxc:SeriesPoint Argument="Python" Value="60" Tag="30" />
            <dxc:SeriesPoint Argument="Ruby" Value="80" Tag="20"/>
            <dxc:SeriesPoint Argument="VB.Net" Value="50" Tag="0"/>
            <dxc:SeriesPoint Argument="VBA" Value="90" Tag="62" />
        </dxc:RadarAreaSeries2D>
    </dxc:RadarDiagram2D.Series>
CustomMarker2DModel.PointTemplate可以重写数据点的模板
dxc:SeriesLabel Visible="True" ConnectorVisible="False" ElementTemplate="{StaticResource LabelItemDataTemplate}"  这个设置数据值的显示样式
值得一提的是,雷达图中数据值默认显示的是Value,那如果需要的话,是否可以设置为其它值呢?答案是可以的,通过用Tag存储数据或者直接用数据绑定,然后在dxc:RadarAreaSeries2D.Label的模板中绑定父属性Tag或者绑定数据就行了。
 
 
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。
目录
相关文章
WPF疑难问题之Treeview中HierarchicalDataTemplate多级样式
WPF疑难问题之Treeview中HierarchicalDataTemplate多级样式
512 0
|
C# 数据安全/隐私保护
【WPF】右下角弹出自定义通知样式(Notification)——简单教程
原文:【WPF】右下角弹出自定义通知样式(Notification)——简单教程 1.先看效果 2.实现 1.主界面是MainWindow 上面就只摆放一个Button即可。
3184 1
|
8月前
|
开发者 C# 存储
WPF开发者必读:资源字典应用秘籍,轻松实现样式与模板共享,让你的WPF应用更上一层楼!
【8月更文挑战第31天】在WPF开发中,资源字典是一种强大的工具,用于共享样式、模板、图像等资源,提高了应用的可维护性和可扩展性。本文介绍了资源字典的基础知识、创建方法及最佳实践,并通过示例展示了如何在项目中有效利用资源字典,实现资源的重用和动态绑定。
234 0
|
8月前
|
开发者 C# 存储
WPF开发者必读:样式与模板的艺术,轻松定制UI外观,让你的应用程序更上一层楼!
【8月更文挑战第31天】在WPF应用开发中,样式与模板是实现美观界面与一致性的关键工具。样式定义了控件如字体、颜色等属性,而模板则允许自定义控件布局与子控件,两者均可存储于`.xaml`文件中。本文介绍了样式与模板的基础知识,通过示例展示了如何创建并应用它们来改变按钮的外观,从而提升用户体验。
199 0
|
8月前
|
存储 前端开发 C#
WPF/C#:更改界面的样式
WPF/C#:更改界面的样式
101 0
WPF-布局样式练习-Day02-聊天气泡
WPF-布局样式练习-Day02-聊天气泡
338 1
|
11月前
|
C#
浅谈WPF之样式与资源
WPF通过样式,不仅可以方便的设置控件元素的展示方式,给用户呈现多样化的体验,还简化配置,避免重复设置元素的属性,以达到节约成本,提高工作效率的目的,样式也是资源的一种表现形式。本文以一个简单的小例子,简述如何设置WPF的样式以及资源的应用,仅供学习分享使用,如有不足之处,还请指正。
230 0
WPF-Binding问题-模板样式使用Binding TemplatedParent与TemplateBinding区别
WPF-Binding问题-模板样式使用Binding TemplatedParent与TemplateBinding区别
331 0
WPF-样式问题-处理ListBox、ListView子项内容全填充问题
WPF-样式问题-处理ListBox、ListView子项内容全填充问题
325 0
WPF-布局样式练习-Day01
WPF-布局样式练习-Day01
162 0