예제 #1
0
        public void RenderClockLabel
        (
            Graphics aCanvas,
            string aCaption,
            float aBaseX,
            float aBaseY,
            Vector2D aV,
            SizeFactor aPos,
            StyleInfo aStyle,
            Font aFont,
            ClockVisualStyle aClockStyle
        )
        {
            float      TextRectSize = 100.0f;
            RectangleF TR           = new RectangleF
                                      (
                aBaseX + (aV.A * (aClockStyle.Size + aPos.Constant) * aPos.Scaled) - (TextRectSize / 2),
                aBaseY + (aV.B * (aClockStyle.Size + aPos.Constant) * aPos.Scaled) - (TextRectSize / 2),
                TextRectSize,
                TextRectSize
                                      );

            StringFormat Fmt = new StringFormat
            {
                Alignment     = StringAlignment.Center,
                LineAlignment = StringAlignment.Center
            };

            aCanvas.DrawString(aCaption, aFont, aStyle.FillBrush, TR, Fmt);
        }
예제 #2
0
        public void RenderClockArrow
        (
            Graphics aCanvas,
            float aBaseX,
            float aBaseY,
            Vector2D aV,
            ClockVisualStyle.ClockArrow aArrowStyle,
            ClockVisualStyle aClockStyle
        )
        {
            aCanvas.DrawLine
            (
                aArrowStyle.Style.LinePen,
                aBaseX - (aV.A * (aClockStyle.Size + aArrowStyle.LineBackwardTip.Constant) * aArrowStyle.LineBackwardTip.Scaled),
                aBaseY - (aV.B * (aClockStyle.Size + aArrowStyle.LineBackwardTip.Constant) * aArrowStyle.LineBackwardTip.Scaled),
                aBaseX + (aV.A * (aClockStyle.Size + aArrowStyle.LineSize.Constant) * aArrowStyle.LineSize.Scaled),
                aBaseY + (aV.B * (aClockStyle.Size + aArrowStyle.LineSize.Constant) * aArrowStyle.LineSize.Scaled)
            );

            aCanvas.FillEllipse
            (
                aArrowStyle.Style.FillBrush,
                aBaseX - aArrowStyle.CircleSize.Constant,
                aBaseY - aArrowStyle.CircleSize.Constant,
                2 * aArrowStyle.CircleSize.Constant,
                2 * aArrowStyle.CircleSize.Constant
            );
        }
예제 #3
0
        public void RenderClock
        (
            Graphics aCanvas,
            float aBaseX,
            float aBaseY,
            ClockVisualStyle aStyle
        )
        {
            for (int M = 1, H = 1; M <= 60; M++)
            {
                bool IsHourLineMark = (M % 5 == 0);

                Vector2D LineVector = Vector2D.UnitVectorFromAngle(GetClockAngle(M, ClockCycle.Minutes));

                if (IsHourLineMark)
                {
                    RenderClockMark(aCanvas, aBaseX, aBaseY, LineVector, aStyle.LineMarks.HourPosSize,
                                    aStyle.LineMarks.Hours, aStyle);
                }
                else
                {
                    RenderClockMark(aCanvas, aBaseX, aBaseY, LineVector, aStyle.LineMarks.MinPosSize,
                                    aStyle.LineMarks.Minutes, aStyle);
                }

                RenderClockLabel(aCanvas, M.ToString(), aBaseX, aBaseY, LineVector,
                                 aStyle.Numbers.MinutesPosition,
                                 IsHourLineMark ? aStyle.Numbers.PrimaryMinutes : aStyle.Numbers.SecondaryMinutes,
                                 IsHourLineMark ? aStyle.Numbers.PrimaryMinutesFont : aStyle.Numbers.SecondaryMinutesFont,
                                 aStyle
                                 );

                if (IsHourLineMark)
                {
                    RenderClockLabel(aCanvas, H.ToString(), aBaseX, aBaseY, LineVector,
                                     aStyle.Numbers.HoursPosition,
                                     aStyle.Numbers.Hours,
                                     aStyle.Numbers.HoursFont,
                                     aStyle
                                     );

                    H++;
                }
            }

            foreach (Arrows.Arrow A in AllArrows)
            {
                if (RadioBtn_TestVectors.Checked && (A.ClockCycle == ClockCycle.None))
                {
                    RenderClockArrow(aCanvas, aBaseX, aBaseY, A.Vector, A.VisualStyle, aStyle);
                }
                else if ((!RadioBtn_TestVectors.Checked) && (A.ClockCycle != ClockCycle.None))
                {
                    RenderClockArrow(aCanvas, aBaseX, aBaseY, A.Vector, A.VisualStyle, aStyle);
                }
            }
        }
예제 #4
0
 public void RenderClockMark
 (
     Graphics aCanvas,
     float aBaseX,
     float aBaseY,
     Vector2D aV,
     SizeFactor aPosSize,
     StyleInfo aStyle,
     ClockVisualStyle aClockStyle
 )
 {
     aCanvas.DrawLine
     (
         aStyle.LinePen,
         aBaseX + (aV.A * aClockStyle.Size * aPosSize.Scaled),
         aBaseY + (aV.B * aClockStyle.Size * aPosSize.Scaled),
         aBaseX + (aV.A * (aClockStyle.Size + aPosSize.Constant) * aPosSize.Scaled),
         aBaseY + (aV.B * (aClockStyle.Size + aPosSize.Constant) * aPosSize.Scaled)
     );
 }
예제 #5
0
            public Arrows(ClockVisualStyle BaseStyle)
            {
                ClockStyle = BaseStyle;

                for (int I = 0; I < BaseStyle.Arrows.All.Length; I++)
                {
                    AllArrows[I] = new Arrow(ClockCycle.None)
                    {
                        VisualStyle = BaseStyle.Arrows.All[I]
                    };
                }

                Alarm.ClockCycle    = ClockCycle.Minutes;
                Hour.ClockCycle     = ClockCycle.Hours;
                Minute.ClockCycle   = ClockCycle.Minutes;
                Second.ClockCycle   = ClockCycle.Seconds;
                SecGhost.ClockCycle = ClockCycle.Seconds;

                User1.Vector.Rotate(new Angle(30, AngleType.Degrees));
                User2.Vector.Rotate(new Angle(120, AngleType.Degrees));
                //User3.Vector.Rotate(new Angle(-90, AngleType.Degrees));
            }