Silverlight 雷达图和一种特殊泡泡画法

Silverlight 雷达图和一种特殊泡泡画法,第1张

概述  自上次发了雷达图,也没怎么说一下。 这次又做了一种图,继续共享一下,就是以一个点为中心,周围绕着几个点,用一个箭头与中心相连并带有某些信息。圆 和中心都可以响应鼠标事件。 我一向不会讲解所做的东西。所以大部分我直接上源码的。 简单讲解一下: 代码结构分为4部分, 1. 首先是画布,其实就是一个canvas因为现在只有二种图, 一个雷达画布 RadarCanvas(比较特殊),和一个二维坐标画布

 

自上次发了雷达图,也没怎么说一下。

这次又做了一种图,继续共享一下,就是以一个点为中心,周围绕着几个点,用一个箭头与中心相连并带有某些信息。圆 和中心都可以响应鼠标事件。

我一向不会讲解所做的东西。所以大部分我直接上源码的。

简单讲解一下:

代码结构分为4部分,

1.

首先是画布,其实就是一个canvas因为现在只有二种图,

一个雷达画布 RadarCanvas(比较特殊),和一个二维坐标画布 CoorCanvas,都派生自ChartCanvas;

2.就是轴

坐标轴CoorAxis 和Radaraxis 都派生自IAxis,其实里面什么也没有。就是一个存一些值,比较这个轴的颜色,它的起始与终结坐标。雷达轴的角度偏移等,。

 

3.model

存值的类了,暂时有 clm泡泡图的点击事件参数 CLMArrowClickEventArg,DataPoint图坐标点,图点点击事件参数ItemClickEventArg,字段映射ItemmapPing

 

4.图形

现有CLMBubbleSerIEs,它是一个特殊的泡泡图,我们项目中用到的。这里就不说它有什么用。只讲实现。

RadarSerIEs,它就是雷达图形

它们都继承自ISerIEs

 

核心就是讲SerIEs怎么画的

 

首先看它们的基类:

VIEw Code

嗯。没有很多东西,都是一些基础 *** 作,和几个接口。

 

下面就可以看泡泡图CLMBubbleSerIEs:

其构造函数:

 public CLMBubbleSerIEs(CoorCanvas canvas)            : base(canvas) {                this.stroke = new SolIDcolorBrush(color.FromArgb(255,51,128)">153,128)">255));                this.Fill = 188,128)">222,128)">255));        }

初始化它的颜色。

最重要的是二个函数

VIEw Code

画一个中心圆 ,和用InitPoint来画周围的小圆。

VIEw Code

 

最后是画坐标图代码:

       /// <summary>        /// 画坐标图        </summary>        private voID DrawCoor()        {            if (!IsDrawBaseline) return;            coorGeometry.figures.Clear();            var xaxis = new Axis.CoorAxis();            xaxis.AxisShap = coorPath;            xaxis.AType = Axis.AxisType.XValue;            var yaxis = new Axis.CoorAxis();            yaxis.AType = Axis.AxisType.YValue;            yaxis.AxisShap = coorPath;                        this.Axises.Add(xaxis);            this.Axises.Add(yaxis);            var coorfigure = new Pathfigure();            coorGeometry.figures.Add(coorfigure);                        //画上箭头            yaxis.StartPoint = coorfigure.StartPoint = new Point(margin.left,margin.top - arrowmargin);            var tlp = new Point() { X = margin.left - arrowmargin,Y = margin.top + arrowmargin };            coorfigure.Segments.Add(new linesegment() { Point = tlp });            coorfigure.Segments.Add(new linesegment() { Point = coorfigure.StartPoint });            var trp = new Point() { X = margin.left + arrowmargin,255)">new linesegment() { Point = trp });            coorfigure.Segments.Add(new linesegment() { Point = coorfigure.StartPoint });            左侧Y轴            yaxis.EndPoint = xaxis.StartPoint = new Point() { X = margin.left,Y = this.Height - margin.Bottom };            coorfigure.Segments.Add(new linesegment() { Point = xaxis.StartPoint });            x轴            xaxis.EndPoint = new Point() { X = this.WIDth - margin.Right + arrowmargin,Y = xaxis.StartPoint.Y };            coorfigure.Segments.Add(new linesegment() { Point = xaxis.EndPoint });                        画右箭头            var brtp = this.WIDth - margin.Right - arrowmargin,Y = xaxis.EndPoint.Y - arrowmargin };            var brbp = new Point() { X = brtp.X,Y = xaxis.EndPoint.Y + arrowmargin };            coorfigure.Segments.Add(new linesegment() { Point = brtp });            coorfigure.Segments.Add(new linesegment() { Point = xaxis.EndPoint });            coorfigure.Segments.Add(new linesegment() { Point = brbp });            coorfigure.Segments.Add(new linesegment() { Point = brbp });            AddChild(coorPath);            Drawline();画虚线        }         画虚线        voID Drawline()        {            var w = this.WIDth - margin.left - margin.Right;            var h = this.Height - margin.top - margin.Bottom;            var vstep = h / HorizontalCount;                     for (var i = 1; i <= HorizontalCount; i++)            {                var l = new line();                l.strokelineJoin = PenlineJoin.Round;                l.strokeDashArray.Add(4);                l.stroke = Dashcolor;                l.strokeThickness = 1;                l.X1 = margin.left;                l.Y1 = this.Height - margin.Bottom - (vstep * i);                l.X2 = this.WIDth - margin.Right;                l.Y2 = l.Y1;                AddChild(l);            }            var xstep = w / VerticalCount;            1; i <= VerticalCount; i++)            {                new line();                l.stroke = Dashcolor;                l.strokeDashArray.Add(4);                l.strokeThickness = 1;                l.X1 = margin.left + xstep * i;                l.Y1 = margin.top;                l.X2 = l.X1;                l.Y2 = this.Height - margin.Bottom;                AddChild(l);            }

 

 啊。我是正的不太会讲解。直接上源码算了

源码地址:源码

总结

以上是内存溢出为你收集整理的Silverlight 雷达图和一种特殊泡泡画法全部内容,希望文章能够帮你解决Silverlight 雷达图和一种特殊泡泡画法所遇到的程序开发问题。

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

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

原文地址: https://outofmemory.cn/web/1067036.html

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

发表评论

登录后才能评论

评论列表(0条)

保存