在本篇文章中,我们将阐述如何定制 C1WPFChart 数据点的标记。

下面分步讲解实现:

1.定制自定义样式:

  1: <Window.Resources>
  2:     <Style x:Key="happy" TargetType="{x:Type c1:PlotElement}">
  3:         <Setter Property="Stroke" Value="Transparent"/>
  4:         <Setter Property="Fill">
  5:             <Setter.Value>
  6:                 <ImageBrush>
  7:                     <ImageBrush.ImageSource>
  8:                         <BitmapImage UriSource="pack://application:,,,/Images/happy.jpg"/>
  9:                     </ImageBrush.ImageSource>
 10:                 </ImageBrush>
 11:             </Setter.Value>
 12:         </Setter>
 13:     </Style>
 14: </Window.Resources>

2.现在,我们可以指定自定义的 SymbolStyle 到 C1WPFChart 。

3.通过 XAML 加载样式:

  1: <c1:DataSeries Label="Growth" SymbolStyle="{StaticResource happy}" SymbolMarker="Box"  SymbolSize="30,30" RenderMode="Default" Values="20 45 19 24 25 5 15 30 12 40" />

4.通过 PlotElementLoaded 事件加载。

  1: private void DataSeries_PlotElementLoaded(object sender, EventArgs e)
  2: {
  3:     PlotElement pe = (PlotElement)sender;
  4:   
  5:     if (!(pe is Lines)) // skip lines
  6:     {
  7:         DataPoint dp = pe.DataPoint;
  8:         pe.Fill = new ImageBrush(new BitmapImage(new Uri("pack://application:,,,/Images/happy.jpg")));
  9:     }
 10: }

同时,通过后台代码进行不同图表数据标记的定制:

  1: private void DataSeries_PlotElementLoaded(object sender, EventArgs e)
  2: {
  3:     PlotElement pe = (PlotElement)sender;
  4:   
  5:     if (!(pe is Lines)) // skip lines
  6:     {
  7:         DataPoint dp = pe.DataPoint;
  8:         pe.Stroke = Brushes.Transparent;
  9:         if (dp.Value <= 20)
 10:         {
 11:             pe.Fill = new ImageBrush(new BitmapImage(new Uri("pack://application:,,,/Images/sad.jpg")));
 12:         }
 13:         else if (dp.Value > 20)
 14:         {
 15:             pe.Fill = new ImageBrush(new BitmapImage(new Uri("pack://application:,,,/Images/happy.jpg")));
 16:         }
 17:     }
 18: }

效果图:

Demo 下载:

点击下载: CS_DEMO

点击下载: VB.NET_Demo

Studio for WPF:定制 C1WPFChart 标记的更多相关文章

  1. WPF的"路径标记语法"

    在此之前我们先了解一下WPF的"路径标记语法" M:表示绘制起点 // M 0,0 L:表示绘制直线 (H:横线 V:竖线)  // L 100,0 C:三次方贝塞尔曲线   // ...

  2. Studio for WPF:使用 C1TileView 创建图片库

    C1TileView 提供了数据交互浏览的功能.允许我们设置最大化和最小化浏览模板,我们可以通过最小化模板快速定位详细浏览选项. 下面我们分步分享实现方法: 1.添加 C1TileView 到窗体,并 ...

  3. Z.Studio高级成衣定制(双井店)价格,地址(图)-北京-大众点评网

    Z.Studio高级成衣定制(双井店)价格,地址(图)-北京-大众点评网 Z.Studio高级成衣定制(双井店)

  4. 《转》Visual Studio 2010 终极定制安装精简方法

    打开VS2010安装目录下的 Setup 文件夹,找到 baseline.dat 文件和 vs_setup.pdi 文件还有一个 locdata.ini 文件,是对应的. 这些都是文本文件,用记事本就 ...

  5. Windows 7中,用Visual Studio开发WPF应用程序,实现从Windows Explorer中拖拽文件到应用程序,始终显示“无法拖放”符号问题解决方案

    Are you running your application or Visual Studio that hosts the app under administrative privilege? ...

  6. 标记扩展和 WPF XAML

      本主题介绍 XAML 的标记扩展概念,包括其语法规则.用途以及底层的类对象模型. 标记扩展是 XAML 语言以及 XAML 服务的 .NET 实现的常规功能. 本主题专门详细论述了用于 WPF X ...

  7. 详解WPF Blend工具中的复合路径功能 ( 含路径标记语法 )

    写此文章的目的是为了简单分析一下 Blend工具中提供的"复合路径"功能.有人在我的博文中留言问我复合路径的问题.  稍微琢磨一下,觉得应该是对的.因此贴出来和大家分享.有不对的说 ...

  8. WPF扩展标记

    标记扩展和 WPF XAML,标记扩展是 XAML 语言以及 XAML 服务的 .NET 实现的常规功能 XAML 处理器和标记扩展 XAML 分析器可将特性值解释为可转换成基元的文本字符串,或可通过 ...

  9. WPF,Silverlight与XAML读书笔记(3) - 标记扩展

    hystar的.Net世界 博客园 首页 新闻 新随笔 联系 管理 订阅 随笔- 103  文章- 0  评论- 107  WPF,Silverlight与XAML读书笔记(3) - 标记扩展   说 ...

随机推荐

  1. c#列举和迭代器

    列举 - Enumeration 迭代器是一个值序列(集合)上的一个只读且只向前移动的游标.迭代器要么实现了IEnumerator接口,要么实现了IEnumerator<T>接口. 从技术 ...

  2. Nginx upstream 长连接

    原文: http://bollaxu.iteye.com/blog/900424 Nginx upstream目前只有短连接,通过HTTP/1.0向后端发起连接,并把请求的"Connecti ...

  3. mem_fun 例子

    // functional_mem_fun.cpp // compile with: /EHsc #include <vector> #include <functional> ...

  4. ASP.NET 如何发现问题的方法

    1.打开IntelliTrace,查看遇到的问题: 2.打开IE8以上,按F12,启动js调试,查看遇到的错误:

  5. MFC资源冲突解决方法

    AFX_MANAGE_STATE(AfxGetStaticModuleState())   先看一个例子: 1.创建一个动态链接到MFC DLL的规则DLL,其内部包含一个对话框资源.指定该对话框ID ...

  6. 理解RxJava:(三)RxJava的优点

    理解RxJava:(三)RxJava的优点 在第一部分,讲解了RxJava的基本结构.在第二部分,展示了operators的强大之处.但是你们可能仍然没有被说服,也没有足够的理由信服.下面是一些能让你 ...

  7. SupportV7包中 SwipeRefreshLayout 修改下拉控件的距离

    //修改下拉距离 ViewTreeObserver vto = mCategoryResults.mSwipeRefreshLayout.getViewTreeObserver(); vto.addO ...

  8. Probabilistic Graphical Models

    http://innopac.lib.tsinghua.edu.cn/search~S1*chx?/YProbabilistic+Graphical+Models&searchscope=1& ...

  9. 析构函数和Dispose的使用区别

    老生常谈的问题了,MSDN也有非常详细的说明但看起来不是很系统.也曾经做过分析,但没有总结下来又忘了,这次整理一下MSDN和网上搜集的一些资料,以备不时只需. 下面是MSDN对这两个函数的建议使用方法 ...

  10. CentOS6部署VNC服务端

    VNC (Virtual Network Computer)是虚拟网络计算机的缩写.VNC 是在基于 UNIX 和 Linux 操作系统的免费的开源软件,远程控制能力强大,高效实用,其性能可以和 Wi ...