Beispiel #1
0
        private Brush GetFillBrush(CompositionManager.EEditorMode mode)
        {
            if (mode == CompositionManager.EEditorMode.RunButNotReloaded)
            {
                return(new SolidBrush(Color.LightGray));
            }

            if (_modelID == CompositionManager.TriggerModelID)
            {
                // trigger has different color
                if (_isMoving)
                {
                    return(new SolidBrush(Color.SteelBlue));
                }
                else
                {
                    return(new SolidBrush(Color.SkyBlue));
                }
            }

            if (_isMoving)
            {
                return(new SolidBrush(Color.Goldenrod));
            }
            else
            {
                return(new SolidBrush(Color.Yellow));
            }
        }
Beispiel #2
0
        /// <summary>
        /// Draws this model's rectangle into specified <see cref="Graphics">Graphics</see> object.
        /// </summary>
        /// <param name="displacement">Displacement of composition box in whole composition area.</param>
        /// <param name="g"><see cref="Graphics">Graphics</see> where rectangle should be drawn.</param>
        public void Draw(Point displacement, CompositionManager.EEditorMode mode, Graphics g)
        {
            Rectangle rectToDraw = Rect;

            rectToDraw.X -= displacement.X;
            rectToDraw.Y -= displacement.Y;

            Region fillRegion = new Region(rectToDraw);

            g.FillRegion(GetFillBrush(mode), fillRegion);
            g.DrawRectangle(_rectanglePen, rectToDraw);
            g.DrawString(_modelID, _font, Brushes.Black, rectToDraw);
        }
Beispiel #3
0
        /// <summary>
        /// Draw connection (i.e. line with triangle) to specific graphics object.
        /// </summary>
        /// <param name="windowPosition">Position of window described by graphics object in composition area.</param>
        /// <param name="g">Graphics where connection should be drawn.</param>
        public void Draw(Point windowPosition, CompositionManager.EEditorMode mode, Graphics g)
        {
            float startX = _providingModel.GetMidPoint().X;
            float startY = _providingModel.GetMidPoint().Y;
            float endX   = _acceptingModel.GetMidPoint().X;
            float endY   = _acceptingModel.GetMidPoint().Y;

            // calculate triangle point in area points and store them internally
            _trianglePoints = GetTrianglePoints(startX, startY, endX, endY);

            // recalculate trinagle points so they correspond to window and can be draw
            Point[] windowTrianglePoints = new Point[3];
            for (int i = 0; i < 3; i++)
            {
                windowTrianglePoints[i].X = _trianglePoints[i].X - windowPosition.X;
                windowTrianglePoints[i].Y = _trianglePoints[i].Y - windowPosition.Y;
            }

            // modify start and end so they correspond to window
            startX -= windowPosition.X;
            startY -= windowPosition.Y;
            endX   -= windowPosition.X;
            endY   -= windowPosition.Y;

            Pen   pen         = linePen;
            Pen   penTriangle = Pens.Red;
            Brush brush       = Brushes.Blue;

            if (mode == CompositionManager.EEditorMode.RunButNotReloaded)
            {
                pen         = linePenDisabled;
                brush       = Brushes.LightGray;
                penTriangle = Pens.Gray;
            }

            g.DrawLine(pen, startX, startY, endX, endY);

            // we draw the triangle only the link is at least 10 pixels
            if (Math.Abs(startX - endX) + Math.Abs(startY - endY) > 10)
            {
                g.FillPolygon(brush, windowTrianglePoints, System.Drawing.Drawing2D.FillMode.Alternate);
                g.DrawPolygon(penTriangle, windowTrianglePoints);
            }
        }