示例#1
0
 /// <summary>
 /// Initializes new instance for CircularAxisLabel class
 /// </summary>
 /// <param name="position"></param>
 /// <param name="center"></param>
 /// <param name="xRadius"></param>
 /// <param name="yRadius"></param>
 /// <param name="label"></param>
 /// <param name="index"></param>
 internal CircularAxisLabel(Point position, Point center, Double xRadius, Double yRadius, AxisLabel label, Double index)
 {
     Center = center;
     XRadius = xRadius;
     YRadius = yRadius;
     Position = position;
     AxisLabel = label;
     Index = index;
     Angle = Visifire.Commons.CircularLabel.ResetMeanAngle(CalculateAngleByCoordinate(Position));
 }
示例#2
0
 /// <summary>
 /// Applies properties to the TextBlock
 /// </summary>
 /// <param name="axisLabel"></param>
 internal void ApplyProperties(AxisLabel axisLabel)
 {
     TextElement.Text = axisLabel.Text;
     TextElement.Foreground = FontColor;
     TextElement.FontSize = FontSize;
     TextElement.FontFamily = FontFamily;
     TextElement.FontStyle = FontStyle;
     TextElement.FontWeight = FontWeight;
     TextElement.TextAlignment = TextAlignment;
 }
示例#3
0
        /// <summary>
        /// Applies properties to the TextBlock
        /// </summary>
        /// <param name="axisLabel"></param>
        internal void ApplyProperties(AxisLabel axisLabel)
        {
#if WPF
            TextElement.FlowDirection = FlowDirection.LeftToRight;
#endif
            TextElement.Text = axisLabel.Text;
            TextElement.Foreground = FontColor;
            TextElement.FontSize = FontSize;
            TextElement.LineHeight = FontSize;
            TextElement.LineStackingStrategy = LineStackingStrategy.BlockLineHeight;
            
            if(FontFamily != null)
                TextElement.FontFamily = FontFamily;
            TextElement.FontStyle = FontStyle;
            TextElement.FontWeight = FontWeight;
            TextElement.TextAlignment = TextAlignment;

            if (!Double.IsNaN(MaxWidth))
            {
                TextElement.TextWrapping = TextWrapping.Wrap;
#if WPF
                TextElement.MaxWidth = MaxWidth;
#else
                TextElement.Width = MaxWidth;
#endif

            }
        }
示例#4
0
 /// <summary>
 /// Apply font properties of axislabels
 /// </summary>
 /// <param name="label">AxisLabel</param>
 private void ApplyAxisLabelFontProperties(AxisLabel label)
 {
     //Set size affecting font properties
     label.FontSize = InternalFontSize;
     label.FontColor = Charts.Chart.CalculateFontColor((Chart as Chart), FontColor, false);
     label.FontFamily = InternalFontFamily;
     label.FontStyle = InternalFontStyle;
     label.FontWeight = InternalFontWeight;
     label.TextAlignment = TextAlignment;
     label.Angle = GetAngle();
 }
示例#5
0
 /// <summary>
 /// Calculate average width of a character
 /// </summary>
 /// <returns></returns>
 private void CalculatAvgWidthOfAChar()
 {
     AxisLabel label = new AxisLabel();
     label.Text = "ABCDabcd01";
     ApplyAxisLabelFontProperties(label);
     label.CreateVisualObject(false, null);
     WidthOfACharacter = label.ActualTextWidth / 10;
 }
示例#6
0
 /// <summary>
 /// Create a instance of a Visifire.Charts.AxisLabel
 /// </summary>
 /// <param name="text">Text as string</param>
 /// <returns>AxisLabel</returns>
 private AxisLabel CreateLabel(String text)
 {
     AxisLabel label = new AxisLabel();
     label.Text = text;
     label.Placement = this.Placement;
     return label;
 }
示例#7
0
        /// <summary>
        /// Apply font properties of axislabels
        /// </summary>
        /// <param name="label">AxisLabel</param>
        private void ApplyAxisLabelFontProperties(AxisLabel label)
        {
            //Set size affecting font properties
            label.FontSize = InternalFontSize;

            if(Placement != PlacementTypes.Circular)
                label.FontColor = Charts.Chart.CalculateFontColor((Chart as Chart), ParentAxis.Background, FontColor, false);
            else
                label.FontColor = Charts.Chart.CalculateFontColor((Chart as Chart), null, FontColor, false);

            label.FontFamily = InternalFontFamily;
            label.FontStyle = InternalFontStyle;
            label.FontWeight = InternalFontWeight;
            label.TextAlignment = TextAlignment;
            label.Angle = GetAngle();
        }
示例#8
0
        /// <summary>
        /// Create a instance of a Visifire.Charts.AxisLabel
        /// </summary>
        /// <param name="text">Text as string</param>
        /// <returns>AxisLabel</returns>
        private AxisLabel CreateLabel(String text)
        {   
            AxisLabel label = new AxisLabel();
            label.Text = text;
            label.Placement = this.Placement;

            if (!Double.IsNaN(TextWrap))
            {
                Double MaxLabelWidth = (ParentAxis.PlotDetails.ChartOrientation == ChartOrientationType.Vertical) ? Chart.ActualHeight : Chart.ActualWidth;
                label.MaxWidth = MaxLabelWidth * TextWrap;

                //if (Double.IsInfinity(label.MaxWidth))
                //    label.MaxWidth = Double.NaN;
            }
            else
                label.MaxWidth = Double.NaN;

            return label;
        }
示例#9
0
        /// <summary>
        /// Calculate AxisX points for Circular chart
        /// </summary>
        /// <param name="width"></param>
        /// <param name="height"></param>
        /// <param name="axisX"></param>
        /// <param name="maxDataPointsCount"></param>
        internal void CalculateAxisXLabelsPoints4Polar(Double width, Double height, Boolean isAxisLabelsEnabled, List<Double> angles, Double minValue, Double maxValue)
        {
            Double radius = Math.Min(width, height) / 2;

            Double reducedPercent = 10;
            if (isAxisLabelsEnabled)
                reducedPercent = 20;

            Radius = radius - (radius * reducedPercent / 100);

            Center = new Point(width / 2, height / 2);

            AnglesInRadian = new List<Double>();

            Double minValInRadian;

            if (minValue != 0)
                minValInRadian = AxisLabel.GetRadians(minValue - 90);
            else
                minValInRadian = 2 * Math.PI - Math.PI / 2;

            Double minAngle = Graphics.ValueToPixelPosition(minValInRadian, 2 * Math.PI + minValInRadian, AxisLabel.GetRadians(minValue), AxisLabel.GetRadians(maxValue), AxisLabel.GetRadians(minValue));
            MinAngleInDegree = minAngle * 180 / Math.PI;

            for (Int32 i = 0; i < angles.Count; i++)
            {
                Double actualAngle = Graphics.ValueToPixelPosition(minValInRadian, 2 * Math.PI + minValInRadian, AxisLabel.GetRadians(minValue), AxisLabel.GetRadians(maxValue), AxisLabel.GetRadians(angles[i]));

                Double x = Radius * Math.Cos(actualAngle) + Center.X;
                Double y = Radius * Math.Sin(actualAngle) + Center.Y;

                ListOfPoints4CircularAxis.Add(new Point(x, y));
                AnglesInRadian.Add(actualAngle);
            }
        }