ShapeRenderer Class

Provides methods to render an individual Shape or GroupShape to a raster or vector image or to a Graphics object.

ExpandedInheritance Hierarchy

Namespace:  Aspose.Words.Rendering
Assembly:  Aspose.Words (in Aspose.Words.dll) Version: 21.5.0

ExpandedSyntax

public class ShapeRenderer : NodeRendererBase

The ShapeRenderer type exposes the following members.

ExpandedConstructors

  NameDescription
Public methodCode exampleShapeRenderer
Initializes a new instance of this class.

ExpandedProperties

  NameDescription
Public propertyCode exampleBoundsInPoints
Gets the actual bounds of the shape in points.
(Inherited from NodeRendererBase.)
Public propertyCode exampleOpaqueBoundsInPoints
Gets the opaque bounds of the shape in points.
(Inherited from NodeRendererBase.)
Public propertyCode exampleSizeInPoints
Gets the actual size of the shape in points.
(Inherited from NodeRendererBase.)

ExpandedMethods

  NameDescription
Public methodEquals
Determines whether the specified object is equal to the current object.
(Inherited from Object.)
Public methodCode exampleGetBoundsInPixels(Single, Single)
Calculates the bounds of the shape in pixels for a specified zoom factor and resolution.
(Inherited from NodeRendererBase.)
Public methodCode exampleGetBoundsInPixels(Single, Single, Single)
Calculates the bounds of the shape in pixels for a specified zoom factor and resolution.
(Inherited from NodeRendererBase.)
Public methodGetHashCode
Serves as the default hash function.
(Inherited from Object.)
Public methodCode exampleGetOpaqueBoundsInPixels(Single, Single)
Calculates the opaque bounds of the shape in pixels for a specified zoom factor and resolution.
(Inherited from NodeRendererBase.)
Public methodCode exampleGetOpaqueBoundsInPixels(Single, Single, Single)
Calculates the opaque bounds of the shape in pixels for a specified zoom factor and resolution.
(Inherited from NodeRendererBase.)
Public methodCode exampleGetSizeInPixels(Single, Single)
Calculates the size of the shape in pixels for a specified zoom factor and resolution.
(Inherited from NodeRendererBase.)
Public methodCode exampleGetSizeInPixels(Single, Single, Single)
Calculates the size of the shape in pixels for a specified zoom factor and resolution.
(Inherited from NodeRendererBase.)
Public methodGetType
Gets the Type of the current instance.
(Inherited from Object.)
Public methodCode exampleRenderToScale
Renders the shape into a Graphics object to a specified scale.
(Inherited from NodeRendererBase.)
Public methodCode exampleRenderToSize
Renders the shape into a Graphics object to a specified size.
(Inherited from NodeRendererBase.)
Public methodCode exampleSave(Stream, ImageSaveOptions)
Renders the shape into an image and saves into a stream.
(Inherited from NodeRendererBase.)
Public methodCode exampleSave(String, ImageSaveOptions)
Renders the shape into an image and saves into a file.
(Inherited from NodeRendererBase.)
Public methodToString
Returns a string that represents the current object.
(Inherited from Object.)

ExpandedExamples

Shows how to render a shape with a Graphics object and display it using a Windows Form.
public void RenderShapesOnForm()
{
    Document doc = new Document();
    DocumentBuilder builder = new DocumentBuilder(doc);

    ShapeForm shapeForm = new ShapeForm(new Size(1017, 840));

    // Below are two ways to use the "ShapeRenderer" class to render a shape to a Graphics object.
    // 1 -  Create a shape with a chart, and render it to a specific scale.
    Chart chart = builder.InsertChart(ChartType.Pie, 500, 400).Chart;
    chart.Series.Clear();
    chart.Series.Add("Desktop Browser Market Share (Oct. 2020)",
        new[] { "Google Chrome", "Apple Safari", "Mozilla Firefox", "Microsoft Edge", "Other" },
        new[] { 70.33, 8.87, 7.69, 5.83, 7.28 });

    Shape chartShape = (Shape)doc.GetChild(NodeType.Shape, 0, true);

    shapeForm.AddShapeToRenderToScale(chartShape, 0, 0, 1.5f);

    // 2 -  Create a shape group, and render it to a specific size.
    GroupShape group = new GroupShape(doc);
    group.Bounds = new RectangleF(0, 0, 100, 100);
    group.CoordSize = new Size(500, 500);

    Shape subShape = new Shape(doc, ShapeType.Rectangle);
    subShape.Width = 500;
    subShape.Height = 500;
    subShape.Left = 0;
    subShape.Top = 0;
    subShape.FillColor = Color.RoyalBlue;
    group.AppendChild(subShape);

    subShape = new Shape(doc, ShapeType.Image);
    subShape.Width = 450;
    subShape.Height = 450;
    subShape.Left = 25;
    subShape.Top = 25;
    subShape.ImageData.SetImage(ImageDir + "Logo.jpg");
    group.AppendChild(subShape);

    builder.InsertNode(group);

    GroupShape groupShape = (GroupShape)doc.GetChild(NodeType.GroupShape, 0, true);
    shapeForm.AddShapeToRenderToSize(groupShape, 880, 680, 100, 100);

    shapeForm.ShowDialog();
}

/// <summary>
/// Renders and displays a list of shapes.
/// </summary>
private class ShapeForm : Form
{
    public ShapeForm(Size size)
    {
        Size = size;
        mShapesToRender = new List<KeyValuePair<ShapeBase, float[]>>();
    }

    public void AddShapeToRenderToScale(ShapeBase shape, float x, float y, float scale)
    {
        mShapesToRender.Add(new KeyValuePair<ShapeBase, float[]>(shape, new[] {x, y, scale}));
    }

    public void AddShapeToRenderToSize(ShapeBase shape, float x, float y, float width, float height)
    {
        mShapesToRender.Add(new KeyValuePair<ShapeBase, float[]>(shape, new[] {x, y, width, height}));
    }

    protected override void OnPaint(PaintEventArgs e)
    {
        foreach (KeyValuePair<ShapeBase, float[]> renderingArgs in mShapesToRender)
            if (renderingArgs.Value.Length == 3)
                RenderShapeToScale(renderingArgs.Key, renderingArgs.Value[0], renderingArgs.Value[1],
                    renderingArgs.Value[2]);
            else if (renderingArgs.Value.Length == 4)
                RenderShapeToSize(renderingArgs.Key, renderingArgs.Value[0], renderingArgs.Value[1],
                    renderingArgs.Value[2], renderingArgs.Value[3]);
    }

    private void RenderShapeToScale(ShapeBase shape, float x, float y, float scale)
    {
        ShapeRenderer renderer = new ShapeRenderer(shape);
        using (Graphics formGraphics = CreateGraphics())
        {
            renderer.RenderToScale(formGraphics, x, y, scale);
        }
    }

    private void RenderShapeToSize(ShapeBase shape, float x, float y, float width, float height)
    {
        ShapeRenderer renderer = new ShapeRenderer(shape);
        using (Graphics formGraphics = CreateGraphics())
        {
            renderer.RenderToSize(formGraphics, x, y, width, height);
        }
    }

    private readonly List<KeyValuePair<ShapeBase, float[]>> mShapesToRender;
}

ExpandedSee Also