label angle是angle什么意思思

(function($){var REDRAW_ATTEMPTS=10;var REDRAW_SHRINK=0.95;function init(plot){var canvas=null,target=null,options=null,maxRadius=null,centerLeft=null,centerTop=null,processed=false,ctx=var highlights=[];plot.hooks.processOptions.push(function(plot,options){if(options.series.pie.show){options.grid.show=if(options.series.pie.label.show=="auto"){if(options.legend.show){options.series.pie.label.show=}else{options.series.pie.label.show=}}
if(options.series.pie.radius=="auto"){if(options.series.pie.label.show){options.series.pie.radius=3/4;}else{options.series.pie.radius=1;}}
if(options.series.pie.tilt>1){options.series.pie.tilt=1;}else if(options.series.pie.tilt<0){options.series.pie.tilt=0;}}});plot.hooks.bindEvents.push(function(plot,eventHolder){var options=plot.getOptions();if(options.series.pie.show){if(options.grid.hoverable){eventHolder.unbind("mousemove").mousemove(onMouseMove);}
if(options.grid.clickable){eventHolder.unbind("click").click(onClick);}}});plot.hooks.processDatapoints.push(function(plot,series,data,datapoints){var options=plot.getOptions();if(options.series.pie.show){processDatapoints(plot,series,data,datapoints);}});plot.hooks.drawOverlay.push(function(plot,octx){var options=plot.getOptions();if(options.series.pie.show){drawOverlay(plot,octx);}});plot.hooks.draw.push(function(plot,newCtx){var options=plot.getOptions();if(options.series.pie.show){draw(plot,newCtx);}});function processDatapoints(plot,series,datapoints){if(!processed){processed=canvas=plot.getCanvas();target=$(canvas).parent();options=plot.getOptions();plot.setData(combine(plot.getData()));}}
function combine(data){var total=0,combined=0,numCombined=0,color=options.bine.color,newdata=[];for(var i=0;i<data.++i){var value=data[i].if($.isArray(value)&&value.length==1){value=value[0];}
if($.isArray(value)){if(!isNaN(parseFloat(value[1]))&&isFinite(value[1])){value[1]=+value[1];}else{value[1]=0;}}else if(!isNaN(parseFloat(value))&&isFinite(value)){value=[1,+value];}else{value=[1,0];}
data[i].data=[value];}
for(var i=0;i<data.++i){total+=data[i].data[0][1];}
for(var i=0;i<data.++i){var value=data[i].data[0][1];if(value/total<=options.bine.threshold){combined+=numCombined++;if(!color){color=data[i].}}}
for(var i=0;i<data.++i){var value=data[i].data[0][1];if(numCombinedoptions.bine.threshold){newdata.push($.extend(data[i],{data:[[1,value]],color:data[i].color,label:data[i].label,angle:value*Math.PI*2/total,percent:value/(total/100)}));}}
if(numCombined>1){newdata.push({data:[[1,combined]],color:color,label:options.bine.label,angle:combined*Math.PI*2/total,percent:combined/(total/100)});}
function draw(plot,newCtx){if(!target){}
var canvasWidth=plot.getPlaceholder().width(),canvasHeight=plot.getPlaceholder().height(),legendWidth=target.children().filter(".legend").children().width()||0;ctx=newCprocessed=maxRadius=Math.min(canvasWidth,canvasHeight/options.series.pie.tilt)/2;centerTop=canvasHeight/2+options.series.pie.offset.centerLeft=canvasWidth/2;if(options.series.pie.offset.left=="auto"){if(options.legend.position.match("w")){centerLeft+=legendWidth/2;}else{centerLeft-=legendWidth/2;}
if(centerLeftcanvasWidth-maxRadius){centerLeft=canvasWidth-maxR}}else{centerLeft+=options.series.pie.offset.}
var slices=plot.getData(),attempts=0;do{if(attempts>0){maxRadius*=REDRAW_SHRINK;}
attempts+=1;clear();if(options.series.pie.tilt<=0.8){drawShadow();}}while(!drawPie()&&attempts=REDRAW_ATTEMPTS){clear();target.prepend("Could not draw pie with labels contained inside canvas");}
if(plot.setSeries&&plot.insertLegend){plot.setSeries(slices);plot.insertLegend();}
function clear(){ctx.clearRect(0,0,canvasWidth,canvasHeight);target.children().filter(".pieLabel, .pieLabelBackground").remove();}
function drawShadow(){var shadowLeft=options.series.pie.shadow.var shadowTop=options.series.pie.shadow.var edge=10;var alpha=options.series.pie.shadow.var radius=options.series.pie.radius>1?options.series.pie.radius:maxRadius*options.series.pie.if(radius>=canvasWidth/2-shadowLeft||radius*options.series.pie.tilt>=canvasHeight/2-shadowTop||radius<=edge){}
ctx.save();ctx.translate(shadowLeft,shadowTop);ctx.globalAlpha=ctx.fillStyle="#000";ctx.translate(centerLeft,centerTop);ctx.scale(1,options.series.pie.tilt);for(var i=1;i1?options.series.pie.radius:maxRadius*options.series.pie.ctx.save();ctx.translate(centerLeft,centerTop);ctx.scale(1,options.series.pie.tilt);ctx.save();var currentAngle=startAfor(var i=0;i0){ctx.save();ctx.lineWidth=options.series.pie.stroke.currentAngle=startAfor(var i=0;i<slices.++i){drawSlice(slices[i].angle,options.series.pie.stroke.color,false);}
ctx.restore();}
drawDonutHole(ctx);ctx.restore();if(options.series.pie.label.show){return drawLabels();}function drawSlice(angle,color,fill){if(angle0.){ctx.moveTo(0,0);}
ctx.arc(0,0,radius,currentAngle,currentAngle+angle/2,false);ctx.arc(0,0,radius,currentAngle+angle/2,currentAngle+angle,false);ctx.closePath();currentAngle+=if(fill){ctx.fill();}else{ctx.stroke();}}
function drawLabels(){var currentAngle=startAvar radius=options.series.pie.label.radius>1?options.series.pie.label.radius:maxRadius*options.series.pie.label.for(var i=0;i=options.series.pie.label.threshold*100){if(!drawLabel(slices[i],currentAngle,i)){}}
currentAngle+=slices[i].}
function drawLabel(slice,startAngle,index){if(slice.data[0][1]==0){}
var lf=options.legend.labelFormatter,text,plf=options.series.pie.label.if(lf){text=lf(slice.label,slice);}else{text=slice.}
if(plf){text=plf(text,slice);}
var halfAngle=((startAngle+slice.angle)+startAngle)/2;var x=centerLeft+Math.round(Math.cos(halfAngle)*radius);var y=centerTop+Math.round(Math.sin(halfAngle)*radius)*options.series.pie.var html=""+text+"";target.append(html);var label=target.children("#pieLabel"+index);var labelTop=(y-label.height()/2);var labelLeft=(x-label.width()/2);label.css("top",labelTop);label.css("left",labelLeft);if(0-labelTop>0||0-labelLeft>0||canvasHeight-(labelTop+label.height())<0||canvasWidth-(labelLeft+label.width())<0){}
if(options.series.pie.label.background.opacity!=0){var c=options.series.pie.label.background.if(c==null){c=slice.}
var pos="top:"+labelTop+"left:"+labelLeft+"";$("").css("opacity",options.series.pie.label.background.opacity).insertBefore(label);}
function drawDonutHole(layer){if(options.series.pie.innerRadius>0){layer.save();var innerRadius=options.series.pie.innerRadius>1?options.series.pie.innerRadius:maxRadius*options.series.pie.innerRlayer.globalCompositeOperation="destination-out";layer.beginPath();layer.fillStyle=options.series.pie.stroke.layer.arc(0,0,innerRadius,0,Math.PI*2,false);layer.fill();layer.closePath();layer.restore();layer.save();layer.beginPath();layer.strokeStyle=options.series.pie.stroke.layer.arc(0,0,innerRadius,0,Math.PI*2,false);layer.stroke();layer.closePath();layer.restore();}}
function isPointInPoly(poly,pt){for(var c=false,i=-1,l=poly.length,j=l-1;++i<l;j=i)((poly[i][1]<=pt[1]&&pt[1]<poly[j][1])||(poly[j][1]<=pt[1]&&pt[1]<poly[i][1]))&&(pt[0]1?options.series.pie.radius:maxRadius*options.series.pie.radius,x,y;for(var i=0;i<slices.++i){var s=slices[i];if(s.pie.show){ctx.save();ctx.beginPath();ctx.moveTo(0,0);ctx.arc(0,0,radius,s.startAngle,s.startAngle+s.angle/2,false);ctx.arc(0,0,radius,s.startAngle+s.angle/2,s.startAngle+s.angle,false);ctx.closePath();x=mouseX-centerLy=mouseY-centerTif(ctx.isPointInPath){if(ctx.isPointInPath(mouseX-centerLeft,mouseY-centerTop)){ctx.restore();return{datapoint:[s.percent,s.data],dataIndex:0,series:s,seriesIndex:i};}}else{var p1X=radius*Math.cos(s.startAngle),p1Y=radius*Math.sin(s.startAngle),p2X=radius*Math.cos(s.startAngle+s.angle/4),p2Y=radius*Math.sin(s.startAngle+s.angle/4),p3X=radius*Math.cos(s.startAngle+s.angle/2),p3Y=radius*Math.sin(s.startAngle+s.angle/2),p4X=radius*Math.cos(s.startAngle+s.angle/1.5),p4Y=radius*Math.sin(s.startAngle+s.angle/1.5),p5X=radius*Math.cos(s.startAngle+s.angle),p5Y=radius*Math.sin(s.startAngle+s.angle),arrPoly=[[0,0],[p1X,p1Y],[p2X,p2Y],[p3X,p3Y],[p4X,p4Y],[p5X,p5Y]],arrPoint=[x,y];if(isPointInPoly(arrPoly,arrPoint)){ctx.restore();return{datapoint:[s.percent,s.data],dataIndex:0,series:s,seriesIndex:i};}}
ctx.restore();}}
function onMouseMove(e){triggerClickHoverEvent("plothover",e);}
function onClick(e){triggerClickHoverEvent("plotclick",e);}
function triggerClickHoverEvent(eventname,e){var offset=plot.offset();var canvasX=parseInt(e.pageX-offset.left);var canvasY=parseInt(e.pageY-offset.top);var item=findNearbySlice(canvasX,canvasY);if(options.grid.autoHighlight){for(var i=0;i<highlights.++i){var h=highlights[i];if(h.auto==eventname&&!(item&&h.series==item.series)){unhighlight(h.series);}}}
if(item){highlight(item.series,eventname);}
var pos={pageX:e.pageX,pageY:e.pageY};target.trigger(eventname,[pos,item]);}
function highlight(s,auto){var i=indexOfHighlight(s);if(i==-1){highlights.push({series:s,auto:auto});plot.triggerRedrawOverlay();}else if(!auto){highlights[i].auto=}}
function unhighlight(s){if(s==null){highlights=[];plot.triggerRedrawOverlay();}
var i=indexOfHighlight(s);if(i!=-1){highlights.splice(i,1);plot.triggerRedrawOverlay();}}
function indexOfHighlight(s){for(var i=0;i1?options.series.pie.radius:maxRadius*options.series.pie.octx.save();octx.translate(centerLeft,centerTop);octx.scale(1,options.series.pie.tilt);for(var i=0;i<highlights.++i){drawHighlight(highlights[i].series);}
drawDonutHole(octx);octx.restore();function drawHighlight(series){if(series.angle0.){octx.moveTo(0,0);}
octx.arc(0,0,radius,series.startAngle,series.startAngle+series.angle/2,false);octx.arc(0,0,radius,series.startAngle+series.angle/2,series.startAngle+series.angle,false);octx.closePath();octx.fill();}}}
var options={series:{pie:{show:false,radius:"auto",innerRadius:0,startAngle:3/2,tilt:1,shadow:{left:5,top:15,alpha:0.02},offset:{top:0,left:"auto"},stroke:{color:"#fff",width:1},label:{show:"auto",formatter:function(label,slice){return""+label+""+Math.round(slice.percent)+"%";},radius:1,background:{color:null,opacity:0},threshold:0},combine:{threshold:-1,color:null,label:"Other"},highlight:{opacity:0.5}}}};$.plot.plugins.push({init:init,options:options,name:"pie",version:"1.1"});})(jQuery);/// &summary&
/// 基于.NET 3.5的Chart工具类;对应的DevExpress版本:12.1.7;
/// &/summary&
public static class ChartUtilsV3
/// &summary&
/// 添加基本的Series
/// &/summary&
/// &param name="chat"&ChartControl&/param&
/// &param name="seriesName"&Series的名称&/param&
/// &param name="seriesType"&Series的类型&/param&
/// &param name="dataSource"&Series的绑定数据源&/param&
/// &param name="argumentDataMember"&ArgumentDataMember绑定字段名称&/param&
/// &param name="valueDataMembers"&ValueDataMembers的绑定字段数组&/param&
/// &param name="visible"&Series是否可见&/param&
/// &returns&Series&/returns&
public static Series AddBaseSeries(this ChartControl chat, string seriesName, ViewType seriesType, object dataSource, string argumentDataMember, string[] valueDataMembers, bool visible)
Series _baseSeries = new Series(seriesName, seriesType);
_baseSeries.ArgumentDataMember = argumentDataM
_baseSeries.ValueDataMembers.AddRange(valueDataMembers);
_baseSeries.DataSource = dataS
_baseSeries.Visible =
chat.Series.Add(_baseSeries);
return _baseS
/// &summary&
/// 设置SeriesTemplate参数
/// &/summary&
/// &param name="chart"&ChartControl&/param&
/// &param name="dataSource"&SeriesTemplate的绑定数据源&/param&
/// &param name="argumentDataMember"&ArgumentDataMember绑定字段名称&/param&
/// &param name="valueDataMembers"&ValueDataMembers的绑定字段数组&/param&
/// &param name="visible"&SeriesTemplate是否可见&/param&
/// &returns&SeriesBase&/returns&
public static SeriesBase SetSeriesTemplate(this ChartControl chart, object dataSource, string argumentDataMember, string[] valueDataMembers, bool visible)
chart.SeriesTemplate.ValueDataMembers.AddRange(valueDataMembers);
chart.SeriesTemplate.ArgumentDataMember = argumentDataM
chart.SeriesTemplate.Visible =
chart.DataSource = dataS
return chart.SeriesT
/// &summary&
/// 增加数据筛选
/// &/summary&
/// &param name="series"&SeriesBase&/param&
/// &param name="columnName"&列名称&/param&
/// &param name="value"&列名称对应的筛选数值&/param&
/// &param name="dataFilterCondition"&DataFilterCondition枚举&/param&
public static void AddDataFilter(this SeriesBase series, string columnName, object value, DataFilterCondition dataFilterCondition)
series.DataFilters.Add(new DataFilter(columnName, value.GetType().FullName, dataFilterCondition, value));
/// &summary&
/// 设置X轴Lable角度
/// &/summary&
/// &param name="chart"&ChartControl&/param&
/// &param name="angle"&角度&/param&
public static void SetXLableAngle(this ChartControl chart, int angle)
if (chart.Diagram is XYDiagram)
XYDiagram _xyDiagram = (XYDiagram)chart.D
if (_xyDiagram != null)
_xyDiagram.AxisX.Label.Angle =
/// &summary&
设置Y轴Lable角度
/// &/summary&
/// &param name="chart"&ChartControl&/param&
/// &param name="angle"&角度&/param&
public static void SetYLableAngle(this ChartControl chart, int angle)
if (chart.Diagram is XYDiagram)
XYDiagram _xyDiagram = (XYDiagram)chart.D
_xyDiagram.AxisY.Label.Angle =
/// &summary&
/// 设置ColorEach
/// &/summary&
/// &param name="series"&SeriesBase&/param&
/// &param name="colorEach"&是否设置成ColorEach&/param&
public static void SetColorEach(this SeriesBase series, bool colorEach)
SeriesViewColorEachSupportBase colorEachView = (SeriesViewColorEachSupportBase)series.V
if (colorEachView != null)
colorEachView.ColorEach = colorE
/// &summary&
/// 设置是否显示十字标线
/// &/summary&
/// &param name="chart"&ChartControl&/param&
/// &param name="crosshair"&是否显示十字标线&/param&
public static void SetCrosshair(this ChartControl chart, bool crosshair)
chart.CrosshairEnabled = crosshair ? DefaultBoolean.True : DefaultBoolean.F
chart.CrosshairOptions.ShowArgumentLabels =
chart.CrosshairOptions.ShowArgumentLine =
chart.CrosshairOptions.ShowValueLabels =
chart.CrosshairOptions.ShowValueLine =
/// &summary&
/// 新增ChartControl的Title文字
/// &/summary&
/// &param name="chart"&ChartControl&/param&
/// &param name="title"&Title文字&/param&
/// &param name="titlePosition"&Title位置&/param&
public static void AddTitle(this ChartControl chart, string title, ChartTitleDockStyle titlePosition)
ChartTitle _chartTitle = new ChartTitle();
_chartTitle.Text =
_chartTitle.Dock = titleP
chart.Titles.Add(_chartTitle);
/// &summary&
/// 新增ChartControl的Title文字
/// &/summary&
/// &param name="chart"&ChartControl&/param&
/// &param name="title"&Title文字&/param&
/// &param name="visible"&是否显示&/param&
/// &param name="titlePosition"&Title位置&/param&
public static void AddTitle(this ChartControl chart, string title, bool visible, ChartTitleDockStyle titlePosition)
ChartTitle _chartTitle = new ChartTitle();
_chartTitle.Text =
_chartTitle.Visible =
_chartTitle.Dock = titleP
chart.Titles.Add(_chartTitle);
/// &summary&
/// 先删除Chart的Title,然后添加新的Title
/// &/summary&
/// &param name="chart"&ChartControl&/param&
/// &param name="title"&Title文字&/param&
/// &param name="titlePosition"&Title位置&/param&
public static void ClearThenAddTitle(this ChartControl chart, string title, ChartTitleDockStyle titlePosition)
chart.Titles.Clear();
ChartTitle _chartTitle = new ChartTitle();
_chartTitle.Text =
_chartTitle.Dock = titleP
chart.Titles.Add(_chartTitle);
/// &summary&
/// 创建Drill-Down样式的Title
/// &/summary&
/// &param name="chart"&ChartControl&/param&
/// &param name="title"&title文字&/param&
/// &param name="visible"&是否可见&/param&
public static void AddDrillDownTitle(this ChartControl chart, string title, bool visible)
ChartTitle _chartTitle = new ChartTitle();
_chartTitle.Alignment = StringAlignment.N
_chartTitle.Antialiasing =
_chartTitle.Font = new Font("Tahoma", 10F, FontStyle.Underline);
_chartTitle.Indent = 20;
_chartTitle.Text =
_chartTitle.TextColor = Color.RoyalB
_chartTitle.Visible =
chart.Titles.Add(_chartTitle);
/// &summary&
/// 饼状Series设置成百分比显示
/// &/summary&
/// &param name="series"&SeriesBase&/param&
/// &param name="valueLegendType"&Series对应Lengend显示类型&/param&
/// &param name="lengendPointView"&Series对应Lengend PointView类型&/param&
public static void SetPiePercentage(this SeriesBase series, NumericFormat valueLegendType, PointView lengendPointView)
if (series.View is PieSeriesView || series.View is Pie3DSeriesView)
PiePointOptions _piePointOptions = (PiePointOptions)series.Label.PointO
if (_piePointOptions != null)
_piePointOptions.PercentOptions.ValueAsPercent =
_piePointOptions.ValueNumericOptions.Format = NumericFormat.P
_piePointOptions.ValueNumericOptions.Precision = 0;
series.LegendPointOptions.ValueNumericOptions.Format = valueLegendT
series.LegendPointOptions.PointView = lengendPointV
/// &summary&
/// Lable格式化设置
/// 【{A} Use it to display a series point arguments 】
/// 【{V} Use it to display a series point values】
/// 【{S} Use it to display the name of the series】
/// &/summary&
/// &param name="series"&SeriesBase&/param&
/// &param name="formatString"&Lable格式化设置;【{A}{V}{S}】&/param&
public static void CustomLable(this SeriesBase series, string formatString)
if (series.LabelsVisibility != DefaultBoolean.True)
series.LabelsVisibility = DefaultBoolean.T
series.Label.PointOptions.Pattern = formatS
/// &summary&
/// 十字标线的Lable格式化设置
/// 【{A} Use it to display a series point arguments 】
/// 【{V} Use it to display a series point values】
/// 【{S} Use it to display the name of the series】
/// &/summary&
/// &param name="series"&SeriesBase&/param&
/// &param name="formatString"&CrosshairLabel格式化设置;【{A}{V}{S}】&/param&
public static void CustomCrosshairLabel(this SeriesBase series, string formatString)
if (series.CrosshairEnabled != DefaultBoolean.True)
series.CrosshairEnabled = DefaultBoolean.T
series.CrosshairLabelPattern = formatS
/// &summary&
/// 将X轴格式化成时间轴
/// &/summary&
/// &param name="chart"&ChartControl&/param&
/// &param name="dateTimeMeasureUnit"&X轴刻度单位&/param&
/// &param name="dateTimeGridAlignment"&X轴刻度间距的单位&/param&
public static void SetAxisXTime(this ChartControl chart, DateTimeMeasurementUnit dateTimeMeasureUnit, DateTimeMeasurementUnit dateTimeGridAlignment)
if (chart.Diagram is XYDiagram)
XYDiagram _diagram = (XYDiagram)chart.D
if (_diagram != null)
_diagram.AxisX.DateTimeMeasureUnit = dateTimeMeasureU//X轴刻度单位
_diagram.AxisX.DateTimeGridAlignment = dateTimeGridA//X轴刻度间距
/// &summary&
/// 将X轴格式化成时间轴
/// &/summary&
/// &param name="chart"&ChartControl&/param&
/// &param name="dateTimeMeasureUnit"&X轴刻度单位&/param&
/// &param name="dateTimeGridAlignment"&X轴刻度间距的单位&/param&
/// &param name="formatString"&时间格式;eg:yyyy-MM&/param&
public static void SetAxisXTime(this ChartControl chart, DateTimeMeasurementUnit dateTimeMeasureUnit, DateTimeMeasurementUnit dateTimeGridAlignment, string formatString)
if (chart.Diagram is XYDiagram)
XYDiagram _diagram = (XYDiagram)chart.D
if (_diagram != null)
_diagram.AxisX.DateTimeMeasureUnit = dateTimeMeasureU//X轴刻度单位
_diagram.AxisX.DateTimeGridAlignment = dateTimeGridA//X轴刻度间距
_diagram.AxisX.DateTimeOptions.Format = DateTimeFormat.C
_diagram.AxisX.DateTimeOptions.FormatString = formatS
/// &summary&
/// 设置ChartControl滚动条【默认X,Y轴都出现】
/// &/summary&
/// &param name="chart"&ChartControl&/param&
/// &param name="backColor"&滚动条背景颜色&/param&
/// &param name="barColor"&滚动条颜色&/param&
/// &param name="borderColor"&滚动条边框颜色&/param&
/// &param name="barThickness"&滚动条宽度&/param&
public static ScrollBarOptions SetScrollBar(this ChartControl chart, Color backColor, Color barColor, Color borderColor, int barThickness)
if (chart.Diagram is XYDiagram)
XYDiagram _diagram = (XYDiagram)chart.D
if (_diagram != null)
_diagram.EnableAxisXScrolling =
_diagram.EnableAxisYScrolling =
_diagram.EnableAxisXZooming =
_diagram.EnableAxisYZooming =
ScrollBarOptions _scrollBarOptions = _diagram.DefaultPane.ScrollBarO
_scrollBarOptions.BackColor = backC
_scrollBarOptions.BarColor = barC
_scrollBarOptions.BorderColor = borderC
_scrollBarOptions.BarThickness = barT
return _scrollBarO
/// &summary&
/// 设置ChartControl X轴滚动条
/// &/summary&
/// &param name="chart"&ChartControl&/param&
/// &param name="backColor"&滚动条背景颜色&/param&
/// &param name="barColor"&滚动条颜色&/param&
/// &param name="borderColor"&滚动条边框颜色&/param&
/// &param name="barThickness"&滚动条宽度&/param&
/// &param name="barAlignment"&滚动条位置&/param&
public static void SetAxisXScrollBar(this ChartControl chart, Color backColor, Color barColor, Color borderColor, int barThickness, ScrollBarAlignment barAlignment)
ScrollBarOptions _scrollBarOptions = SetScrollBar(chart, backColor, barColor, borderColor, barThickness);
if (_scrollBarOptions != null)
_scrollBarOptions.XAxisScrollBarAlignment = barA
_scrollBarOptions.XAxisScrollBarVisible =
_scrollBarOptions.YAxisScrollBarVisible =
/// &summary&
/// 设置ChartControl Y轴滚动条
/// &/summary&
/// &param name="chart"&ChartControl&/param&
/// &param name="backColor"&滚动条背景颜色&/param&
/// &param name="barColor"&滚动条颜色&/param&
/// &param name="borderColor"&滚动条边框颜色&/param&
/// &param name="barThickness"&滚动条宽度&/param&
/// &param name="barAlignment"&滚动条位置&/param&
public static void SetAxisYScrollBar(this ChartControl chart, Color backColor, Color barColor, Color borderColor, int barThickness, ScrollBarAlignment barAlignment)
ScrollBarOptions _scrollBarOptions = SetScrollBar(chart, backColor, barColor, borderColor, barThickness);
if (_scrollBarOptions != null)
_scrollBarOptions.XAxisScrollBarVisible =
_scrollBarOptions.YAxisScrollBarVisible =
_scrollBarOptions.YAxisScrollBarAlignment = barA
/// &summary&
/// 设置X轴Title
/// &/summary&
/// &param name="chart"&ChartControl&/param&
/// &param name="titleText"&Title文字&/param&
/// &param name="titleColor"&Title文字颜色&/param&
public static void SetAxisXTitle(this ChartControl chart, string titleText, Color titleColor)
if (chart.Diagram is XYDiagram)
XYDiagram _diagram = (XYDiagram)chart.D
if (_diagram != null)
_diagram.AxisX.Title.Visible =
_diagram.AxisX.Title.Alignment = StringAlignment.C
_diagram.AxisX.Title.Text = titleT
_diagram.AxisX.Title.TextColor = titleC
_diagram.AxisX.Title.Antialiasing =
_diagram.AxisX.Title.Font = new Font("Tahoma", 14, FontStyle.Bold);
/// &summary&
/// 设置Y轴Title
/// &/summary&
/// &param name="chart"&ChartControl&/param&
/// &param name="titleText"&Title文字&/param&
/// &param name="titleColor"&Title文字颜色&/param&
public static void SetAxisYTitle(this ChartControl chart, string titleText, Color titleColor)
if (chart.Diagram is XYDiagram)
XYDiagram _diagram = (XYDiagram)chart.D
if (_diagram != null)
_diagram.AxisY.Title.Visible =
_diagram.AxisY.Title.Alignment = StringAlignment.C
_diagram.AxisY.Title.Text = titleT
_diagram.AxisY.Title.TextColor = titleC
_diagram.AxisY.Title.Antialiasing =
_diagram.AxisY.Title.Font = new Font("Tahoma", 14, FontStyle.Bold);
/// &summary&
/// 创建基准线ConstantLine
/// &/summary&
/// &param name="chart"&ChartControl&/param&
/// &param name="ctAxisValue"&基准线数值&/param&
/// &param name="ctLegendText"&基准线图例文字&/param&
/// &param name="ctTitle"&基准线文字&/param&
/// &param name="ctTitleColor"&基准线字体颜色&/param&
/// &param name="ctLineColor"&基准线颜色&/param&
/// &param name="ctLineStyle"&基准线样式&/param&
public static void CreateConstantLine(this ChartControl chart, int ctAxisValue, string ctLegendText, string ctTitle, Color ctTitleColor, Color ctLineColor, DashStyle ctLineStyle)
if (chart.Diagram is XYDiagram)
XYDiagram _diagram = (XYDiagram)chart.D
if (_diagram != null)
ConstantLine _ctLine = new ConstantLine();
_ctLine.AxisValue = ctAxisV
_ctLine.Visible =
_ctLine.ShowInLegend =
_ctLine.LegendText = ctLegendT
_ctLine.ShowBehind =
_ctLine.Title.Visible =
_ctLine.Title.Text = ctT
_ctLine.Title.TextColor = ctTitleC
_ctLine.Title.Antialiasing =
_ctLine.Title.Font = new Font("Tahoma", 14, FontStyle.Bold);
_ctLine.Title.ShowBelowLine =
_ctLine.Title.Alignment = ConstantLineTitleAlignment.F
_ctLine.Color = ctLineC
_ctLine.LineStyle.DashStyle = ctLineS
_ctLine.LineStyle.Thickness = 2;
_diagram.AxisY.ConstantLines.Add(_ctLine);
/// &summary&
/// 创建Strip
/// &/summary&
/// &param name="chart"&ChartControl&/param&
/// &param name="strip"&Strip&/param&
/// &param name="stripLable"&Strip文字&/param&
/// &param name="stripLengend"&Strip对应的Lengend文字&/param&
/// &param name="stripColor"&Strip颜色&/param&
/// &param name="stripStyle"&Strip填充样式&/param&
public static void CreateStrip(this ChartControl chart, Strip strip, string stripLable, string stripLengend, Color stripColor, FillMode stripStyle)
if (chart.Diagram is XYDiagram)
XYDiagram _diagram = (XYDiagram)chart.D
if (_diagram != null && strip != null)
_diagram.AxisY.Strips.Add(strip);
_diagram.AxisY.Strips[0].Visible =
_diagram.AxisY.Strips[0].ShowAxisLabel =
_diagram.AxisY.Strips[0].AxisLabelText = stripL
_diagram.AxisY.Strips[0].ShowInLegend =
_diagram.AxisY.Strips[0].LegendText = stripL
_diagram.AxisY.Strips[0].Color = stripC
_diagram.AxisY.Strips[0].FillStyle.FillMode = stripS
/// &summary&
/// 自定义ChartControl的Tooltip
/// &/summary&
/// &param name="chart"&ChartControl&/param&
/// &param name="e"&MouseEventArgs&/param&
/// &param name="tooltip"&ToolTipController&/param&
/// &param name="tooltipTitle"&ToolTipController的Title&/param&
/// &param name="paramter"&委托&/param&
public static void CustomToolTip(this ChartControl chart, MouseEventArgs e, ToolTipController tooltip, string tooltipTitle, System.Func&string, double[], string& paramter)
ChartHitInfo _hitInfo = chart.CalcHitInfo(e.X, e.Y);
SeriesPoint _point = _hitInfo.SeriesP
if (_point != null)
string _msg = paramter(_point.Argument, _point.Values);
tooltip.ShowHint(_msg, tooltipTitle);
tooltip.HideHint();
/// &summary&
/// 设置Legend位于底部并居中
/// &/summary&
/// &param name="legend"&Legend&/param&
public static void SetBottomCenter(this Legend legend)
legend.Direction = LegendDirection.LeftToR
legend.AlignmentHorizontal = LegendAlignmentHorizontal.C
legend.AlignmentVertical = LegendAlignmentVertical.BottomO
/// &summary&
/// 设置饼状图的Lable位置
/// &/summary&
/// &param name="series"&SeriesBase&/param&
/// &param name="lablePosition"&PieSeriesLabelPosition枚举&/param&
public static void SetLablePosition(this SeriesBase series, PieSeriesLabelPosition lablePosition)
if (series.Label is PieSeriesLabel)
PieSeriesLabel _label = series.Label as PieSeriesL
_label.Position = lableP
//if (series.Label is Pie3DSeriesLabel)
Pie3DSeriesLabel _label = series.Label as Pie3DSeriesL
_label.Position = lableP
/// &summary&
/// 饼状图突出设置
/// &/summary&
/// &param name="chart"&ChartControl&/param&
/// &param name="pieSeries"&Series【仅仅适用于PieSeriesView】&/param&
/// &param name="explodeMode"&突出模式【枚举】&/param&
/// &param name="explodedValue"&突出间距&/param&
/// &param name="dragPie"&是否可以拖动突出饼状&/param&
public static void SetPieExplode(this ChartControl chart, SeriesBase pieSeries, PieExplodeMode explodeMode, int explodedValue, bool dragPie)
if (pieSeries.View is PieSeriesView)
if (!chart.RuntimeHitTesting)
chart.RuntimeHitTesting =
PieSeriesView _pieView = pieSeries.View as PieSeriesV
_pieView.ExplodeMode = explodeM
_pieView.ExplodedDistancePercentage = explodedV
_pieView.RuntimeExploding = dragP
/// &summary&
/// chart钻取实现【在MouseClick事件中实现】
/// &/summary&
/// &param name="chart"&ChartControl&/param&
/// &param name="e"&MouseEventArgs&/param&
/// &param name="backKeyWord"&返回主Series的关键字&/param&
/// &param name="gotoHandler"&向下钻取委托&/param&
/// &param name="backHandler"&返回主Series的委托&/param&
public static void DrillDownHelper(this ChartControl chart, MouseEventArgs e, string backKeyWord, Action&SeriesPoint& gotoHandler, Action&SeriesPoint& backHandler)
//private void chartLh_MouseClick(object sender, MouseEventArgs e)
ChartControl _curChart = sender as ChartC
_curChart.DrillDownHelper(
string _argument = point.Argument.ToString();
if (_curChart.Series["pieSeries"].Visible)
_curChart.Series["pieSeries"].Visible =
_curChart.SeriesTemplate.Visible =
if (_curChart.SeriesTemplate.DataFilters.Count == 0)
_curChart.SeriesTemplate.AddDataFilter("categoryName", _argument, DataFilterCondition.Equal);
_curChart.SeriesTemplate.DataFilters[0].Value = _
_curChart.Titles[1].Visible =
_curChart.Titles[0].Visible =
_curChart.Titles[0].Visible =
_curChart.Series["pieSeries"].Visible =
_curChart.SeriesTemplate.Visible =
ChartHitInfo _hitInfo = chart.CalcHitInfo(e.X, e.Y);
SeriesPoint _point = _hitInfo.SeriesP
if (_point != null)
gotoHandler(_point);
ChartTitle link = _hitInfo.ChartT
if (link != null && link.Text.StartsWith(backKeyWord))
link.Visible =
backHandler(_point);
阅读(...) 评论()
Papio_anubis_%28Serengeti%2C_2009%29.jpg" />

我要回帖

更多关于 angle什么意思 的文章

 

随机推荐