private static void DrawRectangleInternal(AM.DrawingContext dc, AM.IBrush brush, AM.Pen pen, bool isStroked, bool isFilled, ref Rect2 rect) { if (!isStroked && !isFilled) { return; } var r = new A.Rect(rect.X, rect.Y, rect.Width, rect.Height); if (isFilled) { dc.FillRectangle(brush, r); } if (isStroked) { dc.DrawRectangle(pen, r); } }
private void Draw(AM.DrawingContext context, DrawCommand command, Stack <Stack <IDisposable> > pushedStates) { switch (command) { case GeometryClipDrawCommand geometryClipDrawCommand: { var geometryPushedState = context.PushGeometryClip(geometryClipDrawCommand.Clip); var currentPushedStates = pushedStates.Peek(); currentPushedStates.Push(geometryPushedState); } break; case ClipDrawCommand clipDrawCommand: { var clipPushedState = context.PushClip(clipDrawCommand.Clip); var currentPushedStates = pushedStates.Peek(); currentPushedStates.Push(clipPushedState); } break; case SaveDrawCommand _: { pushedStates.Push(new Stack <IDisposable>()); } break; case RestoreDrawCommand _: { var currentPushedStates = pushedStates.Pop(); while (currentPushedStates.Count > 0) { var pushedState = currentPushedStates.Pop(); pushedState.Dispose(); } } break; case SetTransformDrawCommand setTransformDrawCommand: { var transformPreTransform = context.PushSetTransform(setTransformDrawCommand.Matrix); var currentPushedStates = pushedStates.Peek(); currentPushedStates.Push(transformPreTransform); } break; case SaveLayerDrawCommand saveLayerDrawCommand: { pushedStates.Push(new Stack <IDisposable>()); } break; case ImageDrawCommand imageDrawCommand: { context.DrawImage( imageDrawCommand.Source, imageDrawCommand.SourceRect, imageDrawCommand.DestRect, imageDrawCommand.BitmapInterpolationMode); } break; case GeometryDrawCommand geometryDrawCommand: { context.DrawGeometry( geometryDrawCommand.Brush, geometryDrawCommand.Pen, geometryDrawCommand.Geometry); } break; case LineDrawCommand lineDrawCommand: { context.DrawLine( lineDrawCommand.Pen, lineDrawCommand.P1, lineDrawCommand.P2); } break; case RectangleDrawCommand rectangleDrawCommand: { context.DrawRectangle( rectangleDrawCommand.Brush, rectangleDrawCommand.Pen, rectangleDrawCommand.Rect, rectangleDrawCommand.RadiusX, rectangleDrawCommand.RadiusY); } break; case TextDrawCommand textDrawCommand: { context.DrawText( textDrawCommand.Brush, textDrawCommand.Origin, textDrawCommand.FormattedText); } break; } }
/// <summary> /// Renders the control. /// </summary> /// <param name="context">The drawing context.</param> public override void Render(DrawingContext context) { var background = Background; var borderBrush = BorderBrush; var borderThickness = BorderThickness; var cornerRadius = CornerRadius; var rect = new Rect(Bounds.Size).Deflate(BorderThickness); if (background != null) { context.FillRectangle(background, rect, cornerRadius); } if (borderBrush != null && borderThickness > 0) { context.DrawRectangle(new Pen(borderBrush, borderThickness), rect, cornerRadius); } }
protected internal override void OnRender(DrawingContext drawingContext) { Rect rect = new Rect(new Size(this.ActualWidth, this.ActualHeight)); if (this.formattedText == null) { this.formattedText = this.CreateFormattedText(); } drawingContext.DrawRectangle( this.Background, null, rect); drawingContext.DrawText(this.formattedText, new Point()); }
protected internal override void OnRender(DrawingContext drawingContext) { Rect brushRect = new Rect(new Size(this.ActualWidth, this.ActualHeight)); Rect penRect = brushRect; Pen pen = null; if (this.BorderBrush != null && !this.BorderThickness.IsEmpty) { pen = new Pen(this.BorderBrush, this.BorderThickness.Left); double penOffset = -(pen.Thickness / 2); brushRect.Inflate(-pen.Thickness, -pen.Thickness); penRect.Inflate(penOffset, penOffset); } if (this.CornerRadius.TopLeft > 0 || this.CornerRadius.BottomLeft > 0) { drawingContext.DrawRoundedRectangle( this.Background, pen, brushRect, this.CornerRadius.TopLeft, this.CornerRadius.BottomLeft); } else { if (this.Background != null) { drawingContext.DrawRectangle(this.Background, null, brushRect); } if (pen != null) { drawingContext.DrawRectangle(null, pen, penRect); } } }