Beispiel #1
0
        /// <summary> 工作区域滚动条事件<para />
        /// 1、生成绘图区域背景和绘图图片<para />
        /// 2、绘制显示区域内的元素
        /// </summary>
        private void ScrollBar_Scroll(object sender, ScrollEventArgs e)
        {
            if (null != picWorkArea.BackgroundImage)
            {
                ((IDisposable)picWorkArea.BackgroundImage).Dispose();
            }
            if (null != sender)
            {
                switch ((sender as Control).Name)
                {
                default: { break; }

                case "hscWScroll":
                {
                    _wa.ViewSize = new Rectangle(e.NewValue, _wa.ViewSize.Location.Y, picWorkArea.Width, picWorkArea.Height);
                    break;
                }

                case "vscWScroll":
                {
                    _wa.ViewSize = new Rectangle(_wa.ViewSize.Location.X, e.NewValue, picWorkArea.Width, picWorkArea.Height);
                    break;
                }
                }
            }
            else
            {
                _wa.ViewSize = new Rectangle(hscWScroll.Value, vscWScroll.Value, picWorkArea.Width, picWorkArea.Height);
            }
            picWorkArea.BackgroundImage = _wa.CreateBackground();
            CreateDrawArea();
            using (Graphics gp = Graphics.FromImage(picWorkArea.Image))
            {
                _wa.GetDrawElement();
                _wa.DrawElement(gp, Point.Empty, ElementType.None);
            }
            if (!Point.Empty.Equals(_mldpoint) && null != sender)
            {
                switch ((sender as Control).Name)
                {
                default: { break; }

                case "hscWScroll":
                {
                    _mldpoint.X += e.OldValue - e.NewValue;
                    break;
                }

                case "vscWScroll":
                {
                    _mldpoint.Y += e.OldValue - e.NewValue;
                    break;
                }
                }
            }
        }