Beispiel #1
0
    /// <summary>
    /// Function: FindTickMarks()
    /// Author: Don England
    /// Last Modified: 19-Feb-2013
    /// Purpose:  This function is meant to find the tickType used
    ///    for generating tickMarkInterval which combine to produce
    ///    a tickOffset for computing visible tick marks
    /// Usage:  Call when ever the visible range has been modified
    /// </summary>
    void FindTickMarks()
    {
        // Find the Current Visible Range
        visibleRange = visibleTimeEnd - visibleTimeStart;
        double typeRange = visibleRange.TotalDays;

        if (typeRange > (365.25 * numberOfTickMarks))
        {
            //use years
            myTickType = tickType.years;
            for (int k = 0; k < (totalRange.Days / 365.25); k++)
            {
                if (typeRange / (365.25 * k) <= numberOfTickMarks)
                {
                    totalTimeStart.AddYears(1);
                }
            }
        }
        else if (typeRange > (30.5 * numberOfTickMarks))
        {
            //use months
            myTickType = tickType.months;
        }
        else if (typeRange > numberOfTickMarks)
        {
            //use days
            myTickType = tickType.days;
        }
        else
        {
            typeRange = visibleRange.TotalMinutes;
            if (typeRange > (60 * numberOfTickMarks))
            {
                //use hours
                myTickType = tickType.hours;
            }
            else if (typeRange > numberOfTickMarks)
            {
                //use minutes
                myTickType = tickType.minutes;
            }
            else
            {
                //use seconds
                myTickType = tickType.seconds;
            }
        }

        FindTickMarkInterval();
    }
Beispiel #2
0
        private void drawTick(int pos, tickType _tickType)
        {
            int wd = this.Size.Width;
            int ht = this.Size.Height;
            //Rulers:
            //  horizontal: ruler1 = top, ruler2 = bottom
            //  vertical: ruler1 = right, ruler2 = left
            int  lineLenght = 0;
            Font ft         = new Font("Arial", 20, GraphicsUnit.Pixel);

            switch (_tickType)
            {
            case tickType.century:
                lineLenght = 15;
                ft         = new Font("Arial", 20, GraphicsUnit.Pixel);
                break;

            case tickType.quint:
                lineLenght = 12;
                ft         = new Font("Arial", 12, GraphicsUnit.Pixel);
                break;

            case tickType.decade:
                lineLenght = 5;
                ft         = new Font("Arial", 8, GraphicsUnit.Pixel);
                break;

            default:
                lineLenght = 3;
                break;
            }
            Graphics  g          = this.CreateGraphics();
            Rectangle ruler1     = new Rectangle();
            Rectangle ruler2     = new Rectangle();
            Point     textPoint1 = new Point();
            Point     textPoint2 = new Point();
            int       adjPost    = pos;

            if (adjPost > 100 && adjPost % 100 != 0)
            {
                adjPost -= (adjPost - (adjPost % 100));
            }
            SizeF stringSize = g.MeasureString(adjPost.ToString("#"), ft);

            if (IAmVertical)
            {
                ruler1     = new Rectangle(wd - lineLenght, pos, lineLenght, 0);
                ruler2     = new Rectangle(0, pos, lineLenght, 0);
                textPoint1 = new Point((int)(wd - lineLenght - stringSize.Width - 2), (int)Math.Floor(pos - (stringSize.Height / 2)));
                textPoint2 = new Point((int)(lineLenght + 2), (int)Math.Floor(pos - (stringSize.Height / 2)));
            }
            else
            {
                ruler1     = new Rectangle(pos, 0, 0, lineLenght);
                ruler2     = new Rectangle(pos, ht - lineLenght, 0, lineLenght);
                textPoint1 = new Point((int)Math.Floor(pos - (stringSize.Width / 2)), (int)(lineLenght + 2));
                textPoint2 = new Point((int)Math.Floor(pos - (stringSize.Width / 2)), (int)(ht - lineLenght - 2 - stringSize.Height));
            }
            Pen        pen       = new Pen(Color.Black);
            SolidBrush drawBrush = new SolidBrush(Color.Black);

            g.DrawLine(pen, ruler1.X, ruler1.Y, ruler1.X + ruler1.Width, ruler1.Y + ruler1.Height);
            g.DrawLine(pen, ruler2.X, ruler2.Y, ruler2.X + ruler2.Width, ruler2.Y + ruler2.Height);
            if (_tickType != tickType.fifth)
            {
                g.DrawString(adjPost.ToString("#"), ft, drawBrush, textPoint1);
                g.DrawString(adjPost.ToString("#"), ft, drawBrush, textPoint2);
            }
            g.Dispose();
        }
    /// <summary>
    /// Function: FindTickMarks()
    /// Author: Don England
    /// Last Modified: 19-Feb-2013
    /// Purpose:  This function is meant to find the tickType used
    ///    for generating tickMarkInterval which combine to produce 
    ///    a tickOffset for computing visible tick marks
    /// Usage:  Call when ever the visible range has been modified
    /// </summary>
    void FindTickMarks()
    {
        // Find the Current Visible Range
        visibleRange = visibleTimeEnd - visibleTimeStart;
        double typeRange = visibleRange.TotalDays;
        if( typeRange > (365.25*numberOfTickMarks)){
            //use years
            myTickType = tickType.years;
            for( int k = 0; k < (totalRange.Days/365.25); k++){
                if(typeRange/(365.25*k) <= numberOfTickMarks)
                    totalTimeStart.AddYears(1);
            }
        }else if( typeRange > (30.5*numberOfTickMarks)){
            //use months
            myTickType = tickType.months;
        }else if( typeRange > numberOfTickMarks){
            //use days
            myTickType = tickType.days;
        }else{
            typeRange = visibleRange.TotalMinutes;
            if( typeRange > (60 * numberOfTickMarks)){
                //use hours
                myTickType = tickType.hours;
            }else if( typeRange > numberOfTickMarks){
                //use minutes
                myTickType = tickType.minutes;
            }
            else{
                //use seconds
                myTickType = tickType.seconds;
            }
        }

        FindTickMarkInterval();
    }