Exemple #1
0
        protected override void OnPaint(PaintEventArgs pe)
        {
            if (m_fr == null)
            {
                pe.Graphics.FillRectangle(new SolidBrush(BackColor), pe.ClipRectangle);
            }
            else
            {
                Frame.DrawArgs drwa = new Frame.DrawArgs();
                drwa.clrBackground     = BackColor;
                drwa.fDrawBackground   = true;
                drwa.fMapSideColors    = Globals.SideColorMappingOn;
                drwa.fShowGrid         = false;
                drwa.fShowOrigin       = Globals.ShowOriginPoint;
                drwa.fShowSpecialPoint = Globals.ShowSpecialPoint;
                drwa.nScale            = m_nScale;

                m_fr.Draw(pe.Graphics, ClientRectangle, drwa, m_ptOffset);
            }

            switch (m_bdrs)
            {
            case BorderStyle.FixedSingle:
                Rectangle rc = ClientRectangle;
                rc.Width--;
                rc.Height--;
                pe.Graphics.DrawRectangle(new Pen(m_clrBorder), rc);
                break;

            case BorderStyle.Fixed3D:
                ControlPaint.DrawBorder3D(pe.Graphics, ClientRectangle, Border3DStyle.Raised);
                break;
            }

            // Calling the base class OnPaint
//			base.OnPaint(pe);
        }
Exemple #2
0
        protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
        {
            if (m_stp == null || m_stp.Count == 0)
            {
                return;
            }

            Frame.DrawArgs drwa = new Frame.DrawArgs();
            drwa.clrBackground     = this.BackColor;
            drwa.fDrawBackground   = true;
            drwa.fMapSideColors    = Globals.SideColorMappingOn;
            drwa.fShowGrid         = Globals.GridOn;
            drwa.cxGrid            = Globals.GridWidth;
            drwa.cyGrid            = Globals.GridHeight;
            drwa.fShowOrigin       = Globals.ShowOriginPoint;
            drwa.fShowSpecialPoint = Globals.ShowSpecialPoint;
            drwa.nScale            = Globals.StripScale;

            Pen   penInactive = new Pen(Color.Black);
            Pen   penActive   = new Pen(Color.Red);
            Font  fnt         = new Font("Arial", 8);
            Brush brBlack     = new SolidBrush(Color.Black);

            int cyFrame = sb.Top - 1;

            Bitmap   bmT = new Bitmap(ClientRectangle.Width, cyFrame + 1);
            Graphics gT  = Graphics.FromImage(bmT);

            gT.Clear(drwa.clrBackground);

            int ifr = sb.Value / m_cxFrame;
            int x   = -(sb.Value % m_cxFrame);

            for (; x < ClientRectangle.Width && ifr < m_stp.Count; x += m_cxFrame, ifr++)
            {
                // Draw a frame around the Frame

                gT.DrawRectangle(penInactive, x, 0, m_cxFrame, cyFrame);

                // Set up a clip box so the scaled frame won't draw anywhere we don't want it to

                gT.SetClip(new Rectangle(x + 1, 1, m_cxFrame - 1, cyFrame - 1));

                // Draw the scaled Frame

                Frame     fr = m_stp[ifr];
                Rectangle rc = new Rectangle(x, 0, m_cxFrame, cyFrame);
                fr.Draw(gT, rc, drwa, m_ptOffset);

                // Draw the frame's hold count

                if (fr.HoldCount != 0)
                {
                    string strT = fr.HoldCount.ToString();
                    SizeF  sizf = e.Graphics.MeasureString(strT, fnt);
                    gT.DrawString(strT, fnt, brBlack, x + m_cxFrame - sizf.Width - 1, cyFrame - fnt.Height);
                }

                // Clear out our special clip region

                gT.ResetClip();
            }

            // Draw a special frame around the active Frame

            for (int ifrT = m_stp.ActiveFrame; ifrT < m_stp.ActiveFrame +
                 m_stp.ActiveFrameCount; ifrT++)
            {
                Rectangle rcT = new Rectangle((ifrT * m_cxFrame) - sb.Value, 0, m_cxFrame, cyFrame);
                gT.DrawRectangle(penActive, rcT);
                rcT.Inflate(-1, -1);
                gT.DrawRectangle(penActive, rcT);
            }

            // Draw the insertion point, if any

            if (m_ifrInsertionPoint != -1)
            {
                Brush br = new SolidBrush(Color.Red);
                int   xT = (m_ifrInsertionPoint * m_cxFrame) - sb.Value;
                gT.FillRectangle(br, xT, 0, 1, cyFrame);
                gT.FillRectangle(br, xT - 2, 0, 5, 1);
                gT.FillRectangle(br, xT - 1, 1, 3, 1);
                gT.FillRectangle(br, xT - 1, cyFrame - 2, 3, 1);
                gT.FillRectangle(br, xT - 2, cyFrame - 1, 5, 1);
            }

            // Copy the buffered Strip to the screen

            e.Graphics.DrawImageUnscaled(bmT, 0, 0);

            gT.Dispose();
            bmT.Dispose();
        }