Beispiel #1
0
        /// <summary>
        /// Отрисовать время
        /// </summary>
        /// <param name="drawter">Область на которой осуществляется отрисовка</param>
        protected void DrawTimeValues(GraphicDrawter drawter)
        {
            if (parent != null)
            {
                DateTime   now   = StartTime;
                SolidBrush brush = new SolidBrush(Color.Black);

                PointF pt = point; pt.X += 3;

                float countLinesInGrig = size.Height / parent.GridHeight;
                float koef             = size.Height / countLinesInGrig;

                for (int i = 0; i <= (int)countLinesInGrig; i++)
                {
                    if (i == (int)countLinesInGrig)
                    {
                        drawter.Graphics.DrawString(now.ToLongTimeString(), font, brush, pt);
                    }
                    else
                    {
                        drawter.Graphics.DrawString(now.ToLongTimeString(), font, brush, pt);
                        now = now.Add(parent.IntervalInCell);

                        pt.Y += koef;
                    }
                }

                parent.FinishTime = now;
            }
        }
Beispiel #2
0
        /// <summary>
        /// Отрисовать время
        /// </summary>
        /// <param name="drawter">Область на которой осуществляется отрисовка</param>
        protected void DrawTimeValues(GraphicDrawter drawter)
        {
            if (parent != null)
            {
                DateTime   now   = StartTime;
                SolidBrush brush = new SolidBrush(Color.Black);

                PointF pt    = point; pt.X += 3;
                Panel  panel = parent as Panel;

                if (panel != null)
                {
                    float countLinesInGrig = size.Height / parent.GridHeight;
                    float koef             = size.Height / countLinesInGrig;

                    for (int i = 0; i <= (int)countLinesInGrig; i++)
                    {
                        if (i == (int)countLinesInGrig)
                        {
                            drawter.Graphics.DrawString(now.ToLongTimeString(), font, brush, pt);
                        }
                        else
                        {
                            drawter.Graphics.DrawString(now.ToLongTimeString(), font, brush, pt);
                            now = now.Add(parent.IntervalInCell);

                            pt.Y += koef;
                        }
                    }

                    float fCount = panel.RectangleGraphics.Height / panel.GridHeight;
                    parent.FinishTime = new DateTime(StartTime.Ticks + (long)(fCount * parent.IntervalInCell.Ticks)); // поправит старттайм
                }
            }
        }
Beispiel #3
0
        /// <summary>
        /// Область вывода изменила размер
        /// </summary>
        /// <param name="sender">Источник события</param>
        /// <param name="e">Параметры события</param>
        private void sheet_Resize(object sender, EventArgs e)
        {
            bool blocked = false;

            try
            {
                if (drawMutex.WaitOne(300))
                {
                    blocked = true;
                    if (sheet != null)
                    {
                        if (sheet.Size.IsEmpty == false)
                        {
                            // общий графический объект на всю область вывода
                            drawter = new GraphicDrawter(sheet.CreateGraphics(), sheet.ClientRectangle);
                            if (Orientation == Orientation.Horizontal)
                            {
                                drawter.Graphics.RotateTransform(270.0f);
                                drawter.Graphics.TranslateTransform(-sheet.ClientRectangle.Height, 0);
                            }

                            InitializePanel();
                            sheet.Invalidate();
                        }
                    }
                }
            }
            finally
            {
                if (blocked)
                {
                    drawMutex.ReleaseMutex();
                }
            }
        }
Beispiel #4
0
        /// <summary>
        /// Отрисовать время
        /// </summary>
        /// <param name="drawter">Область на которой осуществляется отрисовка</param>
        protected void DrawTimeValues(GraphicDrawter drawter)
        {
            if (parent != null)
            {
                DateTime now = StartTime;
                SolidBrush brush = new SolidBrush(Color.Black);

                PointF pt = point; pt.X += 3;

                float countLinesInGrig = size.Height / parent.GridHeight;
                float koef = size.Height / countLinesInGrig;

                for (int i = 0; i <= (int)countLinesInGrig; i++)
                {
                    if (i == (int)countLinesInGrig)
                    {
                        drawter.Graphics.DrawString(now.ToLongTimeString(), font, brush, pt);
                    }
                    else
                    {
                        drawter.Graphics.DrawString(now.ToLongTimeString(), font, brush, pt);
                        now = now.Add(parent.IntervalInCell);

                        pt.Y += koef;
                    }
                }

                parent.FinishTime = now;
            }
        }
Beispiel #5
0
        /// <summary>
        /// Отрисовать время
        /// </summary>
        /// <param name="drawter">Область на которой осуществляется отрисовка</param>
        protected void DrawTimeValues(GraphicDrawter drawter)
        {
            if (parent != null)
            {
                DateTime now = StartTime;
                SolidBrush brush = new SolidBrush(Color.Black);

                PointF pt = point; pt.X += 3;
                Panel panel = parent as Panel;

                if (panel != null)
                {
                    float countLinesInGrig = size.Height / parent.GridHeight;
                    float koef = size.Height / countLinesInGrig;

                    for (int i = 0; i <= (int)countLinesInGrig; i++)
                    {
                        if (i == (int)countLinesInGrig)
                        {
                            drawter.Graphics.DrawString(now.ToLongTimeString(), font, brush, pt);
                        }
                        else
                        {
                            drawter.Graphics.DrawString(now.ToLongTimeString(), font, brush, pt);
                            now = now.Add(parent.IntervalInCell);

                            pt.Y += koef;
                        }
                    }

                    float fCount = panel.RectangleGraphics.Height / panel.GridHeight;
                    parent.FinishTime = new DateTime(StartTime.Ticks + (long)(fCount * parent.IntervalInCell.Ticks)); // поправит старттайм
                }
            }
        }
Beispiel #6
0
        /// <summary>
        /// Восстановить оюласть осечения для страницы
        /// </summary>
        /// <param name="drawter">Область на которой осуществляется отрисовка</param>
        protected void RestoreRegion(GraphicDrawter drawter)
        {
            try
            {
                drawter.Graphics.Clip = based;

                self.Dispose();
                based.Dispose();
            }
            catch { }
        }
Beispiel #7
0
        /// <summary>
        /// Инициализировать регион отсечения для страницы
        /// </summary>
        /// <param name="drawter">Область на которой осуществляется отрисовка</param>
        protected void InitializeRegion(GraphicDrawter drawter)
        {
            RectangleF rect = RectangleF.Empty;

            try
            {
                based = drawter.Graphics.Clip;
                rect  = new RectangleF(point, size);

                self = new Region(rect);
                drawter.Graphics.Clip = self;
            }
            catch { }
        }
Beispiel #8
0
        /// <summary>
        /// Инициализировать регион отсечения для страницы
        /// </summary>
        /// <param name="drawter">Область на которой осуществляется отрисовка</param>
        protected void InitializeRegion(GraphicDrawter drawter)
        {
            RectangleF rect = RectangleF.Empty;

            try
            {
                based = drawter.Graphics.Clip;
                rect  = new RectangleF(point.X - 2, point.Y - 1, size.Width + 6, size.Height + 3);

                self = new Region(rect);
                drawter.Graphics.Clip = self;
            }
            finally { }
        }
Beispiel #9
0
        /// <summary>
        /// Отрисовать панель
        /// </summary>
        protected void Paint()
        {
            if (parent != null)
            {
                GraphicDrawter drawter = parent.Drawter;
                if (drawter != null)
                {
                    InitializeRegion(drawter);

                    // ---- выполняем отрисовку ----

                    drawter.Graphics.Clear(color);
                    DrawGraphics();

                    // -----------------------------

                    RestoreRegion(drawter);
                }
            }
        }
Beispiel #10
0
        /// <summary>
        /// Инициализировать регион отсечения для страницы
        /// </summary>
        /// <param name="drawter">Область на которой осуществляется отрисовка</param>
        protected void InitializeRegion(GraphicDrawter drawter)
        {
            Matrix     matrix = null;
            RectangleF rect   = RectangleF.Empty;

            try
            {
                based = drawter.Graphics.Clip;
                rect  = new RectangleF(point, size);

                self = new Region(rect);
                drawter.Graphics.Clip = self;
            }
            finally
            {
                if (matrix != null)
                {
                    matrix.Dispose();
                }
            }
        }
Beispiel #11
0
        /// <summary>
        /// Отрисовать панель
        /// </summary>
        protected void PaintTimer(DateTime currentTime)
        {
            if (parent != null)
            {
                GraphicDrawter drawter = parent.Drawter;
                if (drawter != null)
                {
                    InitializeRegion(drawter);

                    // ---- выполняем отрисовку ----

                    //drawter.Graphics.Clear(SystemColors.Control);      // очистить область вывода графиков
                    //DrawAreaRectangle();

                    DrawAreaGridTimer(currentTime);
                    DrawGraphicsTimer(currentTime);

                    // -----------------------------

                    RestoreRegion(drawter);
                }
            }
        }
Beispiel #12
0
        /// <summary>
        /// Инициализирует новый экземпляр класса
        /// </summary>
        /// <param name="_sheet"></param>
        public Panel(GraphicsSheet _sheet)
        {
            try
            {
                bufRect = RectangleF.Empty;

                drawMutex = new Mutex();
                locker    = new ReaderWriterLockSlim(LockRecursionPolicy.SupportsRecursion);

                graphics = new List <Graphic>();
                g_locker = new ReaderWriterLockSlim(LockRecursionPolicy.SupportsRecursion);

                if (_sheet != null)
                {
                    sheet = _sheet;

                    sheet.Resize += new EventHandler(sheet_Resize);
                    sheet.Paint  += new PaintEventHandler(sheet_Paint);

                    interval = new TimeSpan(0, 3, 0);          // интервал времени в одной клетке
                    drawter  = new GraphicDrawter(sheet.CreateGraphics(), sheet.ClientRectangle);

                    panels = new List <IElement>();

                    panels.Add(CreateTimePanel());
                    panels.Add(CreateScalePanel());

                    panels.Add(CreateGraphicsPanel());
                    orientation = Orientation.Vertical;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
Beispiel #13
0
        /// <summary>
        /// Восстановить оюласть осечения для страницы
        /// </summary>
        /// <param name="drawter">Область на которой осуществляется отрисовка</param>
        protected void RestoreRegion(GraphicDrawter drawter)
        {
            try
            {
                drawter.Graphics.Clip = based;

                self.Dispose();
                based.Dispose();
            }
            catch { }
        }
Beispiel #14
0
        /// <summary>
        /// Инициализировать регион отсечения для страницы
        /// </summary>
        /// <param name="drawter">Область на которой осуществляется отрисовка</param>
        protected void InitializeRegion(GraphicDrawter drawter)
        {
            Matrix matrix = null;
            RectangleF rect = RectangleF.Empty;

            try
            {
                based = drawter.Graphics.Clip;
                rect = new RectangleF(point, size);

                self = new Region(rect);
                drawter.Graphics.Clip = self;
            }
            finally
            {
                if (matrix != null) matrix.Dispose();
            }
        }
Beispiel #15
0
        /// <summary>
        /// Инициализировать регион отсечения для страницы
        /// </summary>
        /// <param name="drawter">Область на которой осуществляется отрисовка</param>
        protected void InitializeRegion(GraphicDrawter drawter)
        {
            RectangleF rect = RectangleF.Empty;
            try
            {
                based = drawter.Graphics.Clip;
                rect = new RectangleF(point, size);

                self = new Region(rect);
                drawter.Graphics.Clip = self;
            }
            catch { }
        }
Beispiel #16
0
        /// <summary>
        /// Инициализировать регион отсечения для страницы
        /// </summary>
        /// <param name="drawter">Область на которой осуществляется отрисовка</param>
        protected void InitializeRegion(GraphicDrawter drawter)
        {
            RectangleF rect = RectangleF.Empty;
            try
            {
                based = drawter.Graphics.Clip;
                rect = new RectangleF(point.X - 2, point.Y - 1, size.Width + 6, size.Height + 3);

                self = new Region(rect);
                drawter.Graphics.Clip = self;
            }
            finally { }
        }
Beispiel #17
0
        /// <summary>
        /// Область вывода изменила размер
        /// </summary>
        /// <param name="sender">Источник события</param>
        /// <param name="e">Параметры события</param>
        private void sheet_Resize(object sender, EventArgs e)
        {
            bool blocked = false;
            try
            {
                if (drawMutex.WaitOne(300))
                {
                    blocked = true;
                    if (sheet != null)
                    {
                        if (sheet.Size.IsEmpty == false)
                        {
                            // общий графический объект на всю область вывода
                            drawter = new GraphicDrawter(sheet.CreateGraphics(), sheet.ClientRectangle);
                            if (Orientation == Orientation.Horizontal)
                            {
                                drawter.Graphics.RotateTransform(270.0f);
                                drawter.Graphics.TranslateTransform(-sheet.ClientRectangle.Height, 0);
                            }

                            InitializePanel();
                            sheet.Invalidate();
                        }
                    }
                }
            }
            finally
            {
                if (blocked) drawMutex.ReleaseMutex();
            }
        }
Beispiel #18
0
        protected SizeF timeSizeF; // размер области в которую выводится метка времени

        #endregion Fields

        #region Constructors

        /// <summary>
        /// Инициализирует новый экземпляр класса
        /// </summary>
        /// <param name="_sheet"></param>
        public Panel(GraphicsSheet _sheet)
        {
            try
            {
                bufRect = RectangleF.Empty;

                drawMutex = new Mutex();
                locker = new ReaderWriterLockSlim(LockRecursionPolicy.SupportsRecursion);

                graphics = new List<Graphic>();
                g_locker = new ReaderWriterLockSlim(LockRecursionPolicy.SupportsRecursion);

                if (_sheet != null)
                {
                    sheet = _sheet;

                    sheet.Resize += new EventHandler(sheet_Resize);
                    sheet.Paint += new PaintEventHandler(sheet_Paint);

                    interval = new TimeSpan(0, 0, 10);          // интервал времени в одной клетке
                    drawter = new GraphicDrawter(sheet.CreateGraphics(), sheet.ClientRectangle);

                    panels = new List<IElement>();

                    panels.Add(CreateTimePanel());
                    panels.Add(CreateScalePanel());

                    panels.Add(CreateGraphicsPanel());
                    orientation = Orientation.Vertical;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }