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); }
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 ); }
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); } } }
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) ); }
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)); }