# Shape Report Item Overview

The Shape report item displays a single selection of predefined shapes in a report.

The following screenshot shows a Shape report item with its `ShapeType="Right Arrow"` on the report design surface.

![A Shape report item having its shape set to right arrow](https://www.telerik.com/products/reporting/documentation/assets/78ca4e1278ffce66fe51da5d1099cb4e/shape.png)

You can use shapes to create visual effects within a report. You can set display and other properties to this item by using the Properties pane.

The following table lists the `ShapeType` property modes supported by the Shape.

| Lines           | Stars      | Arrows       | Other    |
| :-------------- | :--------- | :----------- | :------- |
| Vertical Line   | 3-ray star | Top Arrow    | Ellipse  |
| Horizontal Line | 4-ray star | Bottom Arrow | Triangle |
| Slant Line      | 5-ray star | Left Arrow   | Square   |
| BackSlant Line  | 6-ray star | Right Arrow  | Pentagon |
|                 | 8-ray star |              | Hexagon  |
|                 |            |              | Octagon  |
|                 |            |              | Cross    |

The Shape enables you to create custom shapes programmatically. The following code snippet shows how to inherit the [ShapeBase](https://www.telerik.com/products/reporting/documentation/api/telerik.reporting.drawing.shapes.shapebase) class and provide a custom set of `PointF` arrays that will form the Shape. The coordinates of the points are relative and do not depend on the size or position of the item in the report.

```C#
class CustomShapeType : Drawing.Shapes.ShapeBase
{
    public override object Clone()
    {
        return new CustomShapeType()
        {
            Bounds = this.Bounds
        };
    }

    protected override void CreateShape()
    {
        var points = new System.Drawing.PointF[]
        {
            new System.Drawing.PointF(0.5f, 1.5f),
            new System.Drawing.PointF(2, 0),
            new System.Drawing.PointF(6, 4),
            new System.Drawing.PointF(4, 6),
            new System.Drawing.PointF(2, 4),
            new System.Drawing.PointF(6, 0),
            new System.Drawing.PointF(7.5f, 1.5f)
        };

        base.AddLines(points, false);
    }
}
```

```VB.NET
Class CustomShapeType
    Inherits Drawing.Shapes.ShapeBase

    Public Overrides Function Clone() As Object
        Return New CustomShapeType() With {.Bounds = Me.Bounds}
    End Function

    Protected Overrides Sub CreateShape()
        Dim points = New System.Drawing.PointF() {New System.Drawing.PointF(0.5F, 1.5F), New System.Drawing.PointF(2, 0), New System.Drawing.PointF(6, 4), New System.Drawing.PointF(4, 6), New System.Drawing.PointF(2, 4), New System.Drawing.PointF(6, 0), New System.Drawing.PointF(7.5F, 1.5F)}
        MyBase.AddLines(points, False)
    End Sub
End Class
```

You can create the Shape at runtime and add it to a report item container (Section, Panel, or other). The following snippet shows how to instantiate a Shape of the `CustomShape` type:

```C#
Shape CreateShape()
{
    var shape = new Telerik.Reporting.Shape()
    {
        ShapeType = new CustomShapeType(),
        Size = new Drawing.SizeU(Drawing.Unit.Cm(2), Drawing.Unit.Cm(2)),
        Location = new Drawing.PointU(Drawing.Unit.Cm(1), Drawing.Unit.Cm(1)),
    };
    shape.Style.Color = System.Drawing.Color.Green;
    shape.Style.LineWidth = Drawing.Unit.Pixel(5);

    return shape;
}
```

```VB.NET
Private Function CreateShape() As Shape
    Dim shape = New Telerik.Reporting.Shape() With {.ShapeType = New CustomShapeType(), .Size = New Drawing.SizeU(Drawing.Unit.Cm(2), Drawing.Unit.Cm(2)), .Location = New Drawing.PointU(Drawing.Unit.Cm(1), Drawing.Unit.Cm(1))}
    shape.Style.Color = System.Drawing.Color.Green
    shape.Style.LineWidth = Drawing.Unit.Pixel(5)
    Return shape
End Function
```

## Next Steps

* [(Demo) Crypto Dashboard Report with a Shape](https://demos.telerik.com/reporting/crypto-dashboard)
* [Using Styles to Customize Reports](https://www.telerik.com/products/reporting/documentation/styling/styling-reports/using-styles-to-customize-reports)
* [(API) Shape](https://www.telerik.com/products/reporting/documentation/api/telerik.reporting.shape)
* [(API) ShapeType](https://www.telerik.com/products/reporting/documentation/api/telerik.reporting.shape#Telerik_Reporting_Shape_ShapeType)
* [(API) Stretch](https://www.telerik.com/products/reporting/documentation/api/telerik.reporting.shape#Telerik_Reporting_Shape_Stretch)
* [Demo Page for Telerik Reporting](https://demos.telerik.com/reporting)
* [Telerik Reporting Knowledge Base](https://www.telerik.com/products/reporting/documentation/knowledge-base)

## See Also

* [Telerik Reporting Homepage](https://www.telerik.com/products/reporting)
* [Reporting Forums](https://www.telerik.com/forums/reporting)
* [Reporting Blog](https://www.telerik.com/blogs/tag/reporting)
* [Reporting Videos](https://www.telerik.com/videos/reporting)
* [Reporting Roadmap](https://www.telerik.com/support/whats-new/reporting/roadmap)
* [Reporting Pricing](https://www.telerik.com/purchase/individual/reporting)
* [Reporting Training](https://learn.telerik.com/learn/course/external/view/elearning/19/reporting-report-server-training)
