Example #1
0
 public virtual void Draw(UI.Controls.Canvas canvas, XGraphics graphics, Palette palette, DrawingContext context)
 {
     Drawing.DrawHandle(canvas, graphics, palette, visualBounds, context, false, true);
 }
Example #2
0
 public void Draw(Canvas canvas, XGraphics graphics, Palette palette, DrawingContext context)
 {
     Drawing.DrawHandle(canvas, graphics, palette, Bounds, context, false, false);
 }
Example #3
0
        protected override void OnPaint(PaintEventArgs e)
        {
            if (DesignMode)
            {
                e.Graphics.Clear(Settings.Color[Colors.Canvas]);
                return;
            }

            foreach (var element in Project.Current.Elements)
            {
                element.Flagged = false;
            }
            foreach (var element in Canvas.SelectedElements)
            {
                element.Flagged = true;
            }

            using (var nativeGraphics = Graphics.FromHdc(e.Graphics.GetHdc()))
            {
                using (var graphics = XGraphics.FromGraphics(nativeGraphics, new XSize(Width, Height)))
                {
                    using (var palette = new Palette())
                    {
                        var clientArea = new Rectangle(0, 0, Width, Height);

                        ControlPaint.DrawBorder3D(nativeGraphics, clientArea, Border3DStyle.Raised);
                        clientArea.Inflate(-OuterBorderSize, -OuterBorderSize);
                        nativeGraphics.FillRectangle(SystemBrushes.Control, clientArea);
                        clientArea.Inflate(-OuterPadding, -OuterPadding);
                        ControlPaint.DrawBorder3D(nativeGraphics, clientArea, Border3DStyle.SunkenOuter);
                        clientArea.Inflate(-InnerBorderSize, -InnerBorderSize);

                        nativeGraphics.FillRectangle(palette.CanvasBrush, clientArea);
                        clientArea.Inflate(-InnerPadding, -InnerPadding);

                        //nativeGraphics.FillRectangle(Brushes.Cyan, clientArea);

                        var canvasBounds = Canvas != null?Canvas.ComputeCanvasBounds(false) : Rect.Empty;

                        var borderPen = palette.Pen(Settings.Color[Colors.Border], 0);
                        foreach (var element in Project.Current.Elements)
                        {
                            if (element is Room)
                            {
                                var room       = (Room)element;
                                var roomBounds = CanvasToClient(room.InnerBounds.ToRectangleF(), canvasBounds, clientArea);
                                graphics.DrawRectangle(borderPen, room.Flagged ? palette.BorderBrush : palette.FillBrush, roomBounds);
                            }
                        }

                        if (Canvas != null)
                        {
                            // draw the viewport area as a selectable "handle"
                            var viewportBounds = CanvasToClient(Canvas.Viewport.ToRectangleF(), canvasBounds, clientArea);
                            viewportBounds.Intersect(clientArea);
                            if (Project.Current.Elements.Count > 0)
                            {
                                var context = new DrawingContext(1f);
                                context.Selected = m_draggingViewport;
                                Drawing.DrawHandle(Canvas, graphics, palette, new Rect(viewportBounds), context, true, false);
                            }
                        }
                    }
                }
            }
            e.Graphics.ReleaseHdc();

            base.OnPaint(e);
        }