Beispiel #1
0
        /// <summary> 工作区域重绘事件
        /// </summary>
        private void picWorkArea_Paint(object sender, PaintEventArgs e)
        {
            e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;
            //判断如果有元素选中
            if (_wa.IsSelectElement)
            {
                _wa.DrawElement(e.Graphics);
            }
            //判断框选鼠标左键按下位置不为空,绘制选择框
            if (!Point.Empty.Equals(_mldpoint))
            {
                Pen dotpen = new Pen(Color.Red, 1.5f);

                /* 如果绘制路段或道岔,绘制临时线
                 * 否则绘制框选框
                 */
                if (ElementType.Path.Equals(_eletype) || ElementType.Fork.Equals(_eletype))
                {
                    using (dotpen)
                    {
                        dotpen.DashStyle = DashStyle.Dash;
                        _mldpoint.X     += hscWScroll.Value;
                        _mldpoint.Y     += vscWScroll.Value;
                        _mlmpoint.X     += hscWScroll.Value;
                        _mlmpoint.Y     += vscWScroll.Value;
                        _mldpoint        = _wa.CorrectPoint(_mldpoint);
                        _mlmpoint        = _wa.CorrectPoint(_mlmpoint);
                        _mldpoint.X     -= hscWScroll.Value;
                        _mldpoint.Y     -= vscWScroll.Value;
                        _mlmpoint.X     -= hscWScroll.Value;
                        _mlmpoint.Y     -= vscWScroll.Value;
                        e.Graphics.DrawLine(dotpen, _mldpoint, _mlmpoint);
                    }
                }
                else
                {
                    using (dotpen)
                    {
                        dotpen.DashStyle = DashStyle.Dash;
                        e.Graphics.DrawRectangle(dotpen, _selectrect);
                    }
                }
            }
        }