silverlight visifire控件图表制作——silverlight 后台方法画图

1、调用wcf 获取信息

private void svc_GetSingleChartDataCompleted(object sender, GetSingleChartDataCompletedEventArgs e)
{
ObservableCollection<ListItem> lBaseOilBar = e.Result;
CreateChart(this.gridVisifire, lBaseOilBar);
}

2、构造图表 ,根据解析xml获得的ListItem 画图

public void CreateChart(Grid oGrid, ObservableCollection<ListItem> lBaseOilBar)
{
foreach (ListItem li in lBaseOilBar)
{
#region 图表大小,框线,位置
Chart chart = new MyCharts();
chart.Width = 800;
chart.Height = 600;
chart.ScrollingEnabled = false;
//chart.Margin = new Thickness(50, 50, 10, 20);
#endregion
#region 设置 chart 的PlotArea阴影
PlotArea plot = new PlotArea();
plot.ShadowEnabled = false; //阴影
chart.PlotArea = plot;
#endregion
#region 图表标题
Title title = new Title();
string sTitle = li.Title;
title.Text = sTitle;
title.FontSize = 16;
chart.Titles.Add(title);
#endregion
#region X 坐标轴
Axis axisX = new Axis();
AxisLabels xal = new AxisLabels
{
FontSize = 14//设置文字大小
};
axisX.AxisLabels = xal;
//axisX.AxisMaximum = 52;//X轴最大值
//axisX.AxisMinimum = 1;//X轴最小值
//axisX.Interval = 2;//X轴坐标间距值
//axisX.IntervalType = IntervalTypes.Number;
chart.AxesX.Add(axisX);
#endregion
#region Y 坐标轴
Axis axisY = new Axis();
AxisLabels yal = new AxisLabels
{
FontSize = 14//设置文字大小
};
axisY.AxisLabels = yal;
if (li.AxisYMinimum != "")
{
axisY.AxisMinimum = Convert.ToDouble(li.AxisYMinimum);//Y轴最小值
}
if (li.AxisYMaximum != "")
{
axisY.AxisMaximum = Convert.ToDouble(li.AxisYMaximum);//Y轴最大值
}
//Y轴数据单位
string sYUint = li.YUint;
axisY.Title = sYUint;
axisY.TitleFontSize = 15;//字体大小
// axisY.StartFromZero = false;//坐标是否从0开始
//axisY.AxisMinimum = 10; //y轴刻度最小值
//axisY.AxisMaximum = 100; //y轴刻度最大值
chart.AxesY.Add(axisY);
#endregion
#region 双坐标轴
string IsTwoY = "";
IsTwoY = li.TWOY;
if (IsTwoY == "true")
{
Axis axisYT = new Axis() { AxisType = AxisTypes.Secondary };
AxisLabels yalT = new AxisLabels
{
FontSize = 14//设置文字大小
};
axisYT.AxisLabels = yalT;
axisYT.ValueFormatString = "##";//坐标轴数据格式
if (li.AxisYTMinimum != "")
{
axisYT.AxisMinimum = Convert.ToDouble(li.AxisYTMinimum);//Y轴最小值
}
if (li.AxisYTMaximum != "")
{
axisYT.AxisMaximum = Convert.ToDouble(li.AxisYTMaximum);//Y轴最大值
}
//Y轴数据单位
string sYUintT = li.YUintT;
axisYT.Title = sYUintT;
axisYT.TitleFontSize = 15;//设置文字大小
chart.AxesY.Add(axisYT);
}
#endregion
//标题事件
title.MouseLeftButtonDown += new MouseButtonEventHandler(title_MouseLeftButtonDown);

#region 设置图标字体大小
Legend legend = new Legend();
legend.FontSize = 13;//设置文字大小
chart.Legends.Add(legend);
#endregion

//X轴数据
string[] sXLabel = li.XAXIS.ToArray();

//设置图的颜色
ColorSet cs = new ColorSet();
cs.Id = "colorset1";

int iMax = 0;
for (int j = 0; j < li.YAXISs.Count(); j++)
{
YAXIS oYAXIS = (YAXIS)li.YAXISs[j];
string sYTitle = "";
sYTitle = oYAXIS.Name;
double[] dYValue = null;
dYValue = oYAXIS.YValue.ToArray();
double[] dYValueBengin = null;
DataSeries dataSeries = new DataSeries();
#region 鼠标显示数据样式设置 倾斜角度、是否显示、坐标点数据样式、字体大小、原油年产量图特殊处理、 数据内嵌外嵌
dataSeries.LegendText = sYTitle;
string[] dXLabValue = null;
if (oYAXIS.XLabValue != null)
{
dXLabValue = oYAXIS.XLabValue.ToArray();
dataSeries.ToolTipText = "#AxisXLabel,#YValue";//鼠标显示数据格式
}
//设置坐标点数据倾斜角度(-90至90)
string LabelAngle = "";
LabelAngle = oYAXIS.LabelAngle;
if (oYAXIS.LabelAngle != "")
{
dataSeries.LabelAngle = Convert.ToDouble(LabelAngle);
}
//是否显示坐标点数据 //(true ,false)
dataSeries.LabelEnabled = isShowData;
//鼠标显示数据坐标点数据样式 ("##","#,#",".")
dataSeries.YValueFormatString = "##";
//设置图标(鼠标显示数据)字体大小
dataSeries.LabelFontSize = 12;
if (sXLabel.Length > 20)//图特殊处理
{
axisX.AxisLabels.FontSize = 11;//设置文字大小
axisX.AxisLabels.Angle = -90;
axisX.Interval = 1;
dataSeries.LabelFontSize = 11;//设置图标(鼠标显示数据)字体大小
}
#region 数据内嵌外嵌
string LabelStyle = "";
LabelStyle = oYAXIS.LabelStyle;
switch (LabelStyle)
{
case "Inside":
dataSeries.LabelStyle = LabelStyles.Inside;//数据内嵌
break;
case "Outside":
dataSeries.LabelStyle = LabelStyles.OutSide;//数据外嵌
break;
case "Defaultside":
break;
}
#endregion
#endregion
#region 坐标轴是否是双坐标
if (oYAXIS.AxisYType == "Secondary")
{
dataSeries.AxisYType = AxisTypes.Secondary;
}
else
{
dataSeries.AxisYType = AxisTypes.Primary;
}
#endregion
#region 设置柱状图的颜色 
string strColor = oYAXIS.Color;
switch (strColor)
{
case "Red":
cs.Brushes.Add(new SolidColorBrush(Color.FromArgb(0xff, 0xff, 0x45, 0x00))); //#FFFF4500 orangeRed
break;
case "Yellow":
cs.Brushes.Add(new SolidColorBrush(Color.FromArgb(0xff, 0xda, 0xa5, 0x20)));//FFDAA520 Goldenrod
break;
case "Orange":
cs.Brushes.Add(new SolidColorBrush(Colors.Orange));
break;
case "Green":
cs.Brushes.Add(new SolidColorBrush(Colors.Green));
break;
case "Blue":
cs.Brushes.Add(new SolidColorBrush(Color.FromArgb(0xff, 0x41, 0x69, 0xe1))); //FF4169E1 RoyalBlue
break;
case "White":
cs.Brushes.Add(new SolidColorBrush(Color.FromArgb(0xff, 0xff, 0xff, 0xff))); //FFFFFFFF RoyalBlue Color.FromArgb(0xff, 0xff, 0xff, 0xff) 透明色;00ff00ff
break;
case "ComflowerBlue":
cs.Brushes.Add(new SolidColorBrush(Color.FromArgb(0xff, 0x64, 0x95, 0xed))); //FF6495ED ComflowerBlue
break;
case "IndianRed":
cs.Brushes.Add(new SolidColorBrush(Color.FromArgb(0xff, 0xcd, 0x5c, 0x5c))); //FFCD5C5C IndianRed
break;
//case "SlateBlue":
// cs.Brushes.Add(new SolidColorBrush(Color.FromArgb(0xff, 0x6a, 0x5a, 0xcd))); //
// break;
case "PaleGreen":
cs.Brushes.Add(new SolidColorBrush(Color.FromArgb(0xff, 0x98, 0xfb, 0x98))); ; //
break;
case "YellowGreen":
cs.Brushes.Add(new SolidColorBrush(Color.FromArgb(0xff, 0x9a, 0xcd, 0x32))); //
break;
case "OrangeRed":
cs.Brushes.Add(new SolidColorBrush(Color.FromArgb(0xff, 0xff, 0x00, 0x00))); //#FFFF0000 Red
break;
case "DarkGreen":
cs.Brushes.Add(new SolidColorBrush(Color.FromArgb(0xff, 0x00, 0x80, 0x00)));//Green
break;
default:
break;
}
#endregion
#region 图表类型(柱状,饼状……)
string sChartType = li.ChartType;
RenderAs oRenderAs = new RenderAs();
switch (sChartType)
{
case "Column":
oRenderAs = RenderAs.Column;
#region 柱子宽度自适应
//if (li.DataPointWidth != "")
//{
// chart.DataPointWidth = Convert.ToDouble(li.DataPointWidth);//设置固定宽度
//}
if (sXLabel.Length < 10)
{
chart.DataPointWidth = 6;
}
else
{
chart.DataPointWidth = chart.Width * 0.08 / sXLabel.Length;
}
#endregion
break;
case "Pie":
oRenderAs = RenderAs.Pie;
dataSeries.LabelFontSize = 14;//设置图标字体大小
dataSeries.LabelEnabled = true; //显示坐标点数据
break;
case "Line":
oRenderAs = RenderAs.Line;
break;
case "Area":
oRenderAs = RenderAs.Area;
if (j > 0)
{
YAXIS oYAXISBengin = (YAXIS)li.YAXISs[0];
dYValueBengin = oYAXISBengin.YValue.ToArray();
}
break;
}
dataSeries.RenderAs = oRenderAs;
#endregion
#region 构造数据 Y轴坐标最大值设置
DataPoint dp;
if (sXLabel != null)
{
//最大值
int Max = 0;
Max = (int)dYValue[0];
for (int i = 0; i < sXLabel.Length; i++)
{
//最大值
Max = Max > (int)dYValue[i] ? Max : (int)dYValue[i];

dp = new DataPoint();
dp.AxisXLabel = sXLabel[i];
dp.YValue = dYValue[i];
dataSeries.DataPoints.Add(dp);

}
#region 最大值
if (j == 0)
{
iMax = Max;
}
else
{
iMax = iMax > Max ? iMax : Max;
}
#endregion
}
#endregion
chart.Series.Add(dataSeries);
}
#region 最大值 设置Y轴图标 解决鼠标显示数据部全问题
Double YAxisMaximum = Math.Round((iMax / 0.85), 0);
int len = YAxisMaximum.ToString().Length;
string lastS = "";
if (len > 2)
{
for (int m = 0; m < len - 2; m++)
{
lastS += "0";
}
YAxisMaximum = Convert.ToInt32((Convert.ToInt32(YAxisMaximum.ToString().Substring(0, 2)) + 1).ToString() + lastS);
axisY.AxisMaximum = YAxisMaximum;
}
#endregion
#region 设置 Chart 使用自定义的颜色集合 colorset1
if (cs.Brushes.Count > 0)
{
chart.ColorSets.Clear();
chart.ColorSets.Add(cs);
chart.ColorSet = "colorset1";
}
# endregion

oGrid.Children.Add(chart);
}
}

silverlight visifire控件图表制作——silverlight 后台方法画图

时间: 2024-10-04 21:37:10

silverlight visifire控件图表制作——silverlight 后台方法画图的相关文章

silverlight visifire控件图表制作——silverlight 后台方法页面事件

1.返回事件 (1.返回silverlight页面,2.返回web页面) private void button_ClickBack(object sender, RoutedEventArgs e)        { 1.返回silverlight页面: this.Content = new BeginControlChart(sTNameClick, strReportDate, false);//增加个参数表名 2.返回web页面 HtmlWindow html = HtmlPage.Wi

silverlight visifire控件图表制作——silverlight 后台方法ControlChart.xaml.cs

一.构造方法ControlChart 1.前台页面控件赋值 //时间下拉框赋值,下拉框赋选定值                for (int ii = DateTime.Today.Year; ii >= 1980; ii--)                {                    string item = string.Format("{0}年", ii.ToString());                    this.dateYear.Items

silverlight visifire控件图表制作——silverlight 后台方法打印

一.后台方法 1.添加引用:using System.Windows.Printing; 2.全局变量://定义图片和文本打印变量  PrintDocument printImage; 3.构造方法体里: //图片打印对象              printImage = new PrintDocument();            //图片打印事件处理              printImage.PrintPage += new EventHandler<PrintPageEventA

silverlight visifire控件图表制作——silverlight 静态页面xaml

一.silverlight 静态页面 1. 时间控件:DatePicker ,添加引用: xmlns:sdk="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls", 触发事件:SelectedDateChanged: 2.文本:TextBlock : 3.下拉框:ComboBox,触发事件:SelectionChanged : 4.按钮:Button ,触发事件:Click: 5.图表画布:Gr

Silverlight Visifire控件应用去除图标的水印

首先,新建一个类,继承自Chart,重写LoadWatermark方法. 再创建图表实例的时候就不能new Chart实例了,直接使用MyCharts. 使用去除水印之前的图片: 使用去除水印之后的图片:

javascript实现silverlight pivotViewer控件

一时无事,就用js实现了一个silverlight pivotViewer控件来练手. 实现效果: silverlight PivotViewer说明地址:https://msdn.microsoft.com/zh-cn/library/system.windows.controls.pivot.pivotviewer(v=vs.95).aspx 提前上代码:pivotViewer 主要分了几个类来实现: PivotViewer:主控件,负责设置属性,组合控件,绑定数据.也是调用的入口 Pivo

实例讲解Silverlight 初始控件如何获得焦点

这个问题本来是在我实际的项目中遇到过的,但这其实是当初项目要求,要求一进入就要使得在用户名那个文字框中聚焦,而不是再用鼠标去点击获得焦点,后来自己费了点时间解决了.本来我没太注意就过去了,没想到在QQ群里也有人问了一样的问题,我想还是写出来,这样大家可以注意一下,可能以后有帮助. 我用一个简单的例子来说明一下吧. 目标:是我要使得在silveright项目中的一个TextBox在不做任何点击操作的同时一开始获得焦点. xaml: 1 <Grid x:Name="LayoutRoot&quo

HighChats图表控件显示精度小数点的方法

相信大家对highchats这个图表控件并不陌生,最近在项目中用到它,但是某些字段需要显示为小数点,顾查找资料文档发现下面两个方式可以实现: 初始化时候添加如下两个参数 tooltip:{??? formatter:function(){??? return''+this.point.name+': '+Math.round(this.percentage)+' %';??? }},plotOptions:{?????? pie:{?????? allowPointSelect:true,???

.NET中TextBox控件设置ReadOnly=true后台取不到值三种解决方法

.NET中TextBox控件设置ReadOnly=true后台取不到值三种解决方法 当TextBox设置了ReadOnly=true后要是在前台为控件添加了值,后台是取不到的,值为空,多么郁闷的一个问题经过尝试,发现可以通过如下的方式解决这个问题.感兴趣的朋友可以了解下 当TextBox设置了ReadOnly="true" 后,要是在前台为控件添加了值,后台是取不到的,值为“空” 原理没想通,说不清楚微软是出于什么考虑的,不过有时是要我们能通过前台脚本来填充值,并不希望用户修改其控件内