diff --git a/samples/RenderDemo/Controls/LineBoundsDemoControl.cs b/samples/RenderDemo/Controls/LineBoundsDemoControl.cs
new file mode 100644
index 0000000000..6030eae47b
--- /dev/null
+++ b/samples/RenderDemo/Controls/LineBoundsDemoControl.cs
@@ -0,0 +1,46 @@
+using System;
+using Avalonia;
+using Avalonia.Controls;
+using Avalonia.Media;
+using Avalonia.Rendering.SceneGraph;
+using Avalonia.Threading;
+
+namespace RenderDemo.Controls
+{
+ public class LineBoundsDemoControl : Control
+ {
+ private double angle = Math.PI / 8;
+
+ public static double CalculateOppSide(double angle, double hyp)
+ {
+ return Math.Sin(angle) * hyp;
+ }
+
+ public static double CalculateAdjSide(double angle, double hyp)
+ {
+ return Math.Cos(angle) * hyp;
+ }
+
+ public override void Render(DrawingContext drawingContext)
+ {
+ var lineLength = Math.Sqrt((100 * 100) + (100 * 100));
+
+ var diffX = CalculateAdjSide(angle, lineLength);
+ var diffY = CalculateOppSide(angle, lineLength);
+
+
+ var p1 = new Point(200, 200);
+ var p2 = new Point(p1.X + diffX, p1.Y + diffY);
+
+ var pen = new Pen(Brushes.Green, 20, lineCap: PenLineCap.Square);
+ var boundPen = new Pen(Brushes.Black);
+
+ drawingContext.DrawLine(pen, p1, p2);
+
+ drawingContext.DrawRectangle(boundPen, LineBoundsHelper.CalculateBounds(p1, p2, pen));
+
+ angle += Math.PI / 360;
+ Dispatcher.UIThread.Post(InvalidateVisual, DispatcherPriority.Background);
+ }
+ }
+}
diff --git a/samples/RenderDemo/MainWindow.xaml b/samples/RenderDemo/MainWindow.xaml
index b17520a466..22925298fe 100644
--- a/samples/RenderDemo/MainWindow.xaml
+++ b/samples/RenderDemo/MainWindow.xaml
@@ -44,6 +44,9 @@
+
+
+
diff --git a/samples/RenderDemo/Pages/LineBoundsDemo.xaml b/samples/RenderDemo/Pages/LineBoundsDemo.xaml
new file mode 100644
index 0000000000..55b2add070
--- /dev/null
+++ b/samples/RenderDemo/Pages/LineBoundsDemo.xaml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/samples/RenderDemo/Pages/LineBoundsDemo.xaml.cs b/samples/RenderDemo/Pages/LineBoundsDemo.xaml.cs
new file mode 100644
index 0000000000..1b87cb1ef6
--- /dev/null
+++ b/samples/RenderDemo/Pages/LineBoundsDemo.xaml.cs
@@ -0,0 +1,19 @@
+using Avalonia;
+using Avalonia.Controls;
+using Avalonia.Markup.Xaml;
+
+namespace RenderDemo.Pages
+{
+ public class LineBoundsDemo : UserControl
+ {
+ public LineBoundsDemo()
+ {
+ this.InitializeComponent();
+ }
+
+ private void InitializeComponent()
+ {
+ AvaloniaXamlLoader.Load(this);
+ }
+ }
+}