예제 #1
0
        public MainWindow()
        {
            _metonicYearModel = new MetonicYearModel();
            _moonModel        = new MoonModel();
            _nodesModel       = new NodesModel();
            _sunModel         = new SunModel(_nodesModel);
            _sunCountModel    = new SunCountModel(_sunModel);
            _monthModel       = new MonthModel(_metonicYearModel, _sunModel, _moonModel);
            _dayModel         = new DayModel(_monthModel, _metonicYearModel);


            InitializeComponent();
            SetYearZero();


            CreateRenderWindow();

            var refreshRate = new TimeSpan(0, 0, 0, 0, 1000 / 60);

            this._timer = new DispatcherTimer {
                Interval = refreshRate
            };
            this._timer.Tick += Timer_Tick;
            this._timer.Start();

            _dispatcherTimer          = new DispatcherTimer();
            _dispatcherTimer.Tick    += new EventHandler(DispatcherTimer_Tick);
            _dispatcherTimer.Interval = new TimeSpan(0, 0, 0, 0, 500);
        }
 public CalendarControl()
 {
     _metonicYearModel = new MetonicYearModel();
     _moonModel        = new MoonModel();
     _nodesModel       = new NodesModel();
     _sunModel         = new SunModel(_nodesModel);
     _sunCountModel    = new SunCountModel(_sunModel);
     _monthModel       = new MonthModel(_metonicYearModel, _sunModel, _moonModel);
     _dayModel         = new DayModel(_monthModel, _metonicYearModel);
 }
예제 #3
0
        private static void DrawSunCountRing(RenderWindow app, ISunCountModel sunCount)
        {
            var sunCountRing      = ElementDrawer.CreateRing(app, 130, new Color(0, 0, 0), true);
            var sunCountPegPoints = ElementDrawer.CreatePegPoints(app, sunCountRing, 13, (Math.PI * 2) / 13);

            foreach (var p in sunCountPegPoints)
            {
                DrawMonthLine(app, p);
            }
            Array.Reverse(sunCountPegPoints);
            sunCountPegPoints[sunCount.GetPosition() - 1].FillColor = new Color(255, 0, 0);
            foreach (var p in sunCountPegPoints)
            {
                app.Draw(p);
            }
        }
        private static void DrawSunCountRing(SKImageInfo info, SKCanvas canvas, ISunCountModel sunCount)
        {
            var sunCountRing      = ElementDrawer.CreateRing(info, canvas, Utility.GetWidthValueFromPercentage(info, (float)22.5), new Color(0, 0, 0), true);
            var sunCountPegPoints = ElementDrawer.CreatePegPoints(info, canvas, sunCountRing, 13);

            foreach (var p in sunCountPegPoints)
            {
                DrawMonthLine(info, canvas, p);
            }

            sunCountPegPoints[sunCount.GetPosition() - 1].FillColor = new Color(255, 0, 0);
            foreach (var p in sunCountPegPoints)
            {
                canvas.DrawCircle(p.x, p.y, p.Radius, GetPointPainter(p));
            }
        }
예제 #5
0
        public static void DrawCalendar(RenderWindow app, INodesModel nodes, ISunModel sun, IMoonModel moon, IMetonicYearModel year, IMonthModel month, IDayModel day, ISunCountModel sunCount)
        {
            ElementDrawer.CreateRing(app, 270, new Color(0, 0, 0), true);
            DrawNodeRing(app, nodes);
            DrawSunRing(app, sun);
            DrawMoonRing(app, moon);
            ElementDrawer.CreateRing(app, 210, new Color(0, 0, 0), true);
            DrawDayRing(app, day, month);
            DrawSunCountRing(app, sunCount);

            DrawMonthRing(app, month);
            DrawYearRing(app, year);
        }