public virtual void Draw(UI.Controls.Canvas canvas, XGraphics graphics, Palette palette, DrawingContext context) { Drawing.DrawHandle(canvas, graphics, palette, visualBounds, context, false, true); }
public void Draw(Canvas canvas, XGraphics graphics, Palette palette, DrawingContext context) { Drawing.DrawHandle(canvas, graphics, palette, Bounds, context, false, false); }
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); }