업무용 소스 예제

공용 Render 함수 예제

안요사님 2022. 1. 12. 10:48
728x90
반응형

- 공용 Render 함수 예제

 

protected override void OnRender(DrawingContext drawingContext)
        {
            try
            {
               if(_startP != null && _mp != null)
               {
                   double minX = _startP.Value.X;
                   if (_mp.Value.X < minX) minX = _mp.Value.X;
                   double maxX = _startP.Value.X;
                   if (_mp.Value.X > maxX) maxX = _mp.Value.X;

                   SolidColorBrush br = new SolidColorBrush();
                   br.Color = Colors.White;
                   br.Opacity = 0.3;                   
                   
                   _timeGapWidth = (maxX - minX + 1);
                   Point start_p1 = new Point(_startP.Value.X,0);
                   Point start_p2 = new Point(_startP.Value.X, this.ActualHeight);

                   Point end_p1 = new Point(_mp.Value.X, 0);
                   Point end_p2 = new Point(_mp.Value.X, this.ActualHeight);
                   drawingContext.DrawLine(new Pen(Brushes.Red, 1), start_p1, start_p2);
                   drawingContext.DrawLine(new Pen(Brushes.Red, 1), end_p1, end_p2);
                   drawingContext.DrawRectangle(br, null, new Rect(new Point(minX, 0), new Size(_timeGapWidth, this.ActualHeight)));
               }
            }
            catch (Exception ee)
            {
                TraceManager.AddLog(string.Format("{0}r\n{1}", ee.StackTrace, ee.Message));
                System.Diagnostics.Debug.WriteLine(string.Format("{0}r\n{1}", ee.StackTrace, ee.Message));
            }
            finally
            {
                base.OnRender(drawingContext);
            }
        }

        Point? _startP = null;

        public delegate void ChangeTimeGapHandler(double timeGapWidth);
        public event ChangeTimeGapHandler onChangeTimeGapEvent;
728x90
반응형