private void Highlight(DrawingContext drawingContext, IEnumerable<Rect> rects) { foreach (var rect in rects) { drawingContext.FillRectangle(bracketHighlightBrush, rect); } }
public void TransformLine(TextView textView, DrawingContext drawingContext, VisualLine line) { if (!string.IsNullOrEmpty(SelectedWord) && line.RenderedText.Text.Contains(SelectedWord)) { var startIndex = 0; while (startIndex != -1) { startIndex = line.RenderedText.Text.IndexOf(SelectedWord, startIndex); if (startIndex != -1) { var rect = VisualLineGeometryBuilder.GetRectsForSegment(textView, new TextSegment { StartOffset = startIndex + line.Offset, EndOffset = startIndex + line.Offset + SelectedWord.Length }).First(); drawingContext.FillRectangle(highlightBrush, rect); startIndex += SelectedWord.Length; } } } }
public void RenderScene(bool fast) { m_Context.FillRectangle(new SolidColorBrush(m_Scene.Document.BackColor.Argb), new A.Rect(new A.Point(0, 0), new A.Size(m_Scene.Width, m_Scene.Height))); RenderGroup(m_Scene.Document, fast); m_Scene.Drawn = true; }
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( Avalonia.Matrix.CreateTranslation(-Width/6, -Width/6)* Avalonia.Matrix.CreateRotation(_radians)* Avalonia.Matrix.CreateTranslation(Width/2, Height/2))) { ctx.FillRectangle(new LinearGradientBrush() { GradientStops = { new GradientStop() {Color = Colors.Blue}, new GradientStop(Colors.Red, 1) } }, rc, 5); } }
public void Draw(TextView textView, DrawingContext drawingContext) { if (line > 0 && line < textView.TextDocument.LineCount) { var currentLine = textView.TextDocument.GetLineByNumber(line); var rects = VisualLineGeometryBuilder.GetRectsForSegment(textView, currentLine); foreach (var rect in rects) { var drawRect = new Rect(rect.TopLeft.X, rect.TopLeft.Y, textView.Bounds.Width, rect.Height); drawingContext.FillRectangle(selectedLineBg, drawRect); } } }
public void Draw(TextView textView, DrawingContext drawingContext) { if (textView.SelectionStart == textView.SelectionEnd && textView.CaretIndex != -1 && textView.CaretIndex <= textView.TextDocument.TextLength) { var currentLine = textView.TextDocument.GetLineByOffset(textView.CaretIndex); var rects = VisualLineGeometryBuilder.GetRectsForSegment(textView, currentLine); foreach (var rect in rects) { var drawRect = new Rect(rect.TopLeft.X, rect.TopLeft.Y, textView.Bounds.Width, rect.Height); drawingContext.FillRectangle(selectedLineBg, drawRect); } } }
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); } }
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; // issue #600: set constaint before any FormattedText manipulation // see base.Render(...) implementation FormattedText.Constraint = Bounds.Size; var rects = FormattedText.HitTestTextRange(start, length); if (_highlightBrush == null) { _highlightBrush = (IBrush)this.FindStyleResource("HighlightBrush"); } foreach (var rect in rects) { context.FillRectangle(_highlightBrush, rect); } } base.Render(context); if (selectionStart == selectionEnd) { 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 charPos = FormattedText.HitTestTextPosition(CaretIndex); 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> /// Renders the <see cref="TextBlock"/> to a drawing context. /// </summary> /// <param name="context">The drawing context.</param> public override void Render(DrawingContext context) { var background = Background; if (background != null) { context.FillRectangle(background, new Rect(Bounds.Size)); } FormattedText.Constraint = Bounds.Size; context.DrawText(Foreground, new Point(), FormattedText); }
/// <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); } }
private void DrawSpiroPoint(DrawingContext dc, IBrush brush, Pen pen, SpiroControlPoint point) { switch (point.Type) { case SpiroPointType.Corner: dc.FillRectangle(brush, new Rect(point.X - 3.5, point.Y - 3.5, 7, 7)); break; case SpiroPointType.G4: case SpiroPointType.G2: case SpiroPointType.Left: case SpiroPointType.Right: case SpiroPointType.End: case SpiroPointType.OpenContour: case SpiroPointType.EndOpenContour: var tm = Translate(point.X, point.Y); var tt = dc.PushPreTransform(tm); dc.DrawGeometry(null, pen, EndKnot); tt.Dispose(); break; } }
private void DrawSpiroKnot(DrawingContext dc, IBrush brush, Pen pen, SpiroKnot knot) { switch (knot.Type) { case SpiroPointType.Corner: dc.FillRectangle(brush, new Rect(knot.X - 3.5, knot.Y - 3.5, 7, 7)); break; case SpiroPointType.G4: FillEllipse(dc, brush, new GuidePoint(knot.X, knot.Y), 3.5, 3.5); break; case SpiroPointType.G2: { var rm = Rotation(ToRadians(knot.Theta), new Vector(knot.X, knot.Y)); var rt = dc.PushPreTransform(rm); dc.FillRectangle(brush, new Rect(knot.X - 1.5, knot.Y - 3.5, 3, 7)); rt.Dispose(); } break; case SpiroPointType.Left: { var rm = Rotation(ToRadians(knot.Theta), new Vector(knot.X, knot.Y)); var tm = Translate(knot.X, knot.Y); var rt = dc.PushPreTransform(rm); var tt = dc.PushPreTransform(tm); dc.DrawGeometry(brush, null, LeftKnot); tt.Dispose(); rt.Dispose(); } break; case SpiroPointType.Right: { var rm = Rotation(ToRadians(knot.Theta), new Vector(knot.X, knot.Y)); var tm = Translate(knot.X, knot.Y); var rt = dc.PushPreTransform(rm); var tt = dc.PushPreTransform(tm); dc.DrawGeometry(brush, null, RightKnot); tt.Dispose(); rt.Dispose(); } break; case SpiroPointType.End: { var rm = Rotation(ToRadians(knot.Theta), new Vector(knot.X, knot.Y)); var tm = Translate(knot.X, knot.Y); var rt = dc.PushPreTransform(rm); var tt = dc.PushPreTransform(tm); dc.DrawGeometry(null, pen, EndKnot); tt.Dispose(); rt.Dispose(); } break; case SpiroPointType.OpenContour: { var rm = Rotation(ToRadians(knot.Theta), new Vector(knot.X, knot.Y)); var tm = Translate(knot.X, knot.Y); var rt = dc.PushPreTransform(rm); var tt = dc.PushPreTransform(tm); dc.DrawGeometry(null, pen, OpenContourKnot); tt.Dispose(); rt.Dispose(); } break; case SpiroPointType.EndOpenContour: { var rm = Rotation(ToRadians(knot.Theta), new Vector(knot.X, knot.Y)); var tm = Translate(knot.X, knot.Y); var rt = dc.PushPreTransform(rm); var tt = dc.PushPreTransform(tm); dc.DrawGeometry(null, pen, EndOpenContourKnot); tt.Dispose(); rt.Dispose(); } break; } }
/// <summary> /// Renders the visual to a <see cref="DrawingContext"/>. /// </summary> /// <param name="context">The drawing context.</param> public override void Render(DrawingContext context) { var background = Background; if (background != null) { var renderSize = Bounds.Size; context.FillRectangle(background, new Rect(renderSize)); } base.Render(context); }