protected override void OnRender(DrawingContext ctx) { ctx.FillRectangle(Brushes.Green, new Rect(0, 0, Width, Height)); var rc = new Rect(0, 0, Width/3, Height/3); using (ctx.PushPostTransform( Perspex.Matrix.CreateTranslation(-Width/6, -Width/6)* Perspex.Matrix.CreateRotation(_radians)* Perspex.Matrix.CreateTranslation(Width/2, Height/2))) { ctx.FillRectangle(new LinearGradientBrush() { GradientStops = { new GradientStop() {Color = Colors.Blue}, new GradientStop(Colors.Red, 1) } }, rc, 5); } }
/// <summary> /// Renders the visual to a <see cref="DrawingContext"/>. /// </summary> /// <param name="context">The drawing context.</param> public override void Render(DrawingContext context) { Brush background = Background; if (background != null) { var renderSize = Bounds.Size; context.FillRectangle(background, new Rect(renderSize)); } base.Render(context); }
/// <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); } }
public override void Render(DrawingContext context) { var selectionStart = SelectionStart; var selectionEnd = SelectionEnd; if (selectionStart != selectionEnd) { var start = Math.Min(selectionStart, selectionEnd); var length = Math.Max(selectionStart, selectionEnd) - start; var rects = FormattedText.HitTestTextRange(start, length); var brush = new SolidColorBrush(0xff086f9e); foreach (var rect in rects) { context.FillRectangle(brush, rect); } } base.Render(context); if (selectionStart == selectionEnd) { var charPos = FormattedText.HitTestTextPosition(CaretIndex); var backgroundColor = (((Control)TemplatedParent).GetValue(BackgroundProperty) as SolidColorBrush)?.Color; var caretBrush = Brushes.Black; if(backgroundColor.HasValue) { byte red = (byte)~(backgroundColor.Value.R); byte green = (byte)~(backgroundColor.Value.G); byte blue = (byte)~(backgroundColor.Value.B); caretBrush = new SolidColorBrush(Color.FromRgb(red, green, blue)); } if (_caretBlink) { var x = Math.Floor(charPos.X) + 0.5; var y = Math.Floor(charPos.Y) + 0.5; var b = Math.Ceiling(charPos.Bottom) - 0.5; context.DrawLine( new Pen(caretBrush, 1), new Point(x, y), new Point(x, b)); } } }
/// <summary> /// /// </summary> /// <param name="dc"></param> /// <param name="c"></param> /// <param name="width"></param> /// <param name="height"></param> private void DrawBackground(DrawingContext dc, ArgbColor c, double width, double height) { var color = Color.FromArgb(c.A, c.R, c.G, c.B); var brush = new SolidColorBrush(color); var rect = new Rect(0, 0, width, height); dc.FillRectangle(brush, rect); // TODO: brush.Dispose(); }
/// <summary> /// Renders the <see cref="TextBlock"/> to a drawing context. /// </summary> /// <param name="context">The drawing context.</param> public override void Render(DrawingContext context) { Brush background = Background; if (background != null) { context.FillRectangle(background, new Rect(Bounds.Size)); } FormattedText.Constraint = Bounds.Size; context.DrawText(Foreground, new Point(), FormattedText); }
/// <summary> /// /// </summary> /// <param name="dc"></param> /// <param name="container"></param> private void DrawBackgroundInternal(DrawingContext dc, Container container) { Brush brush = ToSolidBrush(container.Background); var rect = new Rect(0, 0, container.Width, container.Height); dc.FillRectangle(brush, rect); // TODO: brush.Dispose(); }
/// <summary> /// /// </summary> /// <param name="dc"></param> /// <param name="brush"></param> /// <param name="pen"></param> /// <param name="isStroked"></param> /// <param name="isFilled"></param> /// <param name="rect"></param> private static void DrawRectangleInternal( DrawingContext dc, Brush brush, Pen pen, bool isStroked, bool isFilled, ref Rect2 rect) { if (!isStroked && !isFilled) return; var r = new Rect(rect.X, rect.Y, rect.Width, rect.Height); if (isFilled) { dc.FillRectangle(brush, r); } if (isStroked) { dc.DrawRectangle(pen, r); } }
private void DrawRoundRect(DrawingContext ctx) { ctx.FillRectangle(new SolidColorBrush(Colors.White), new Rect(new Size(ClientSize.Width, ClientSize.Height))); var rc = new Rect(0, 0, 60, 60); var transform = GetTransform(); using (ctx.PushPostTransform(transform)) { ctx.FillRectangle(new SolidColorBrush(Colors.Aqua), rc, 20); ctx.DrawRectangle(new Pen(new SolidColorBrush(Colors.Magenta), 10), rc, 20); } }