com.aspose.words

Class ShapeRenderer

public class ShapeRenderer 
extends NodeRendererBase

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

Example:

Shows how to render a shape with a Graphics object.
public static class JFrameGraphics extends JPanel {
    public void paint(Graphics graphics) {
        try {
            // Open a document and get its first shape, which is a chart
            Document doc = new Document(getMyDir() + "Shape.VarietyOfShapes.docx");

            Shape shape = (Shape) doc.getChild(NodeType.SHAPE, 1, true);

            // Create a ShapeRenderer instance and a Graphics object
            // The ShapeRenderer will render the shape that is passed during construction over the Graphics object
            // Whatever is rendered on this Graphics object will be displayed on the screen inside this form
            ShapeRenderer renderer = new ShapeRenderer(shape);

            // Call this method on the renderer to render the chart in the passed Graphics object,
            // on a specified x/y coordinate and scale
            renderer.renderToScale((Graphics2D) graphics, 0f, 0f, 1.5f);

            // Get another shape from the document, and render it to a specific size instead of a linear scale
            GroupShape groupShape = (GroupShape) doc.getChild(NodeType.GROUP_SHAPE, 0, true);
            renderer = new ShapeRenderer(groupShape);
            renderer.renderToSize((Graphics2D) graphics, 500f, 400f, 100f, 200f);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        // Create windows form for present shapes
        JFrame frame = new JFrame("Aspose example");
        frame.getContentPane().add(new JFrameGraphics());
        frame.setSize(1000, 800);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setResizable(false);
    }

Constructor Summary
ShapeRenderer(ShapeBase shape)
Initializes a new instance of this class.
 
Property Getters/Setters Summary
java.awt.geom.Rectangle2D.FloatgetBoundsInPoints()
Gets the actual bounds of the shape in points.
java.awt.geom.Rectangle2D.FloatgetOpaqueBoundsInPoints()
Gets the opaque bounds of the shape in points.
java.awt.DimensiongetSizeInPoints()
Gets the actual size of the shape in points.
 
Method Summary
java.awt.RectanglegetBoundsInPixels(float scale, float dpi)
Calculates the bounds of the shape in pixels for a specified zoom factor and resolution.
java.awt.RectanglegetBoundsInPixels(float scale, float horizontalDpi, float verticalDpi)
Calculates the bounds of the shape in pixels for a specified zoom factor and resolution.
java.awt.RectanglegetOpaqueBoundsInPixels(float scale, float dpi)
Calculates the opaque bounds of the shape in pixels for a specified zoom factor and resolution.
java.awt.RectanglegetOpaqueBoundsInPixels(float scale, float horizontalDpi, float verticalDpi)
Calculates the opaque bounds of the shape in pixels for a specified zoom factor and resolution.
java.awt.DimensiongetSizeInPixels(float scale, float dpi)
Calculates the size of the shape in pixels for a specified zoom factor and resolution.
java.awt.DimensiongetSizeInPixels(float scale, float horizontalDpi, float verticalDpi)
Calculates the size of the shape in pixels for a specified zoom factor and resolution.
java.awt.geom.Point2D.FloatrenderToScale(java.awt.Graphics2D graphics, float x, float y, float scale)
Renders the shape into a java.awt.Graphics2D object to a specified scale.
floatrenderToSize(java.awt.Graphics2D graphics, float x, float y, float width, float height)
Renders the shape into a java.awt.Graphics2D object to a specified size.
voidsave(java.io.OutputStream stream, ImageSaveOptions saveOptions)
Renders the shape into an image and saves into a stream.
voidsave(java.lang.String fileName, ImageSaveOptions saveOptions)
Renders the shape into an image and saves into a file.
 

    • Constructor Detail

      • ShapeRenderer

        public ShapeRenderer(ShapeBase shape)
                      throws java.lang.Exception
        Initializes a new instance of this class.
        Parameters:
        shape - The DrawinML shape object that you want to render.

        Example:

        Shows how to render a shape with a Graphics object.
        public static class JFrameGraphics extends JPanel {
            public void paint(Graphics graphics) {
                try {
                    // Open a document and get its first shape, which is a chart
                    Document doc = new Document(getMyDir() + "Shape.VarietyOfShapes.docx");
        
                    Shape shape = (Shape) doc.getChild(NodeType.SHAPE, 1, true);
        
                    // Create a ShapeRenderer instance and a Graphics object
                    // The ShapeRenderer will render the shape that is passed during construction over the Graphics object
                    // Whatever is rendered on this Graphics object will be displayed on the screen inside this form
                    ShapeRenderer renderer = new ShapeRenderer(shape);
        
                    // Call this method on the renderer to render the chart in the passed Graphics object,
                    // on a specified x/y coordinate and scale
                    renderer.renderToScale((Graphics2D) graphics, 0f, 0f, 1.5f);
        
                    // Get another shape from the document, and render it to a specific size instead of a linear scale
                    GroupShape groupShape = (GroupShape) doc.getChild(NodeType.GROUP_SHAPE, 0, true);
                    renderer = new ShapeRenderer(groupShape);
                    renderer.renderToSize((Graphics2D) graphics, 500f, 400f, 100f, 200f);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        
            public static void main(String[] args) {
                // Create windows form for present shapes
                JFrame frame = new JFrame("Aspose example");
                frame.getContentPane().add(new JFrameGraphics());
                frame.setSize(1000, 800);
                frame.setVisible(true);
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setResizable(false);
            }
    • Property Getters/Setters Detail

      • getBoundsInPoints

        public java.awt.geom.Rectangle2D.Float getBoundsInPoints()
        
        Gets the actual bounds of the shape in points.

        This property returns the actual (as rendered on the page) bounding box of the shape. The bounds takes into account shape rotation (if any).

        Example:

        Shows how to measure and scale shapes.
        // Open a document that contains an OfficeMath object
        Document doc = new Document(getMyDir() + "Shape.OfficeMath.docx");
        
        // Create a renderer for the OfficeMath object
        OfficeMath officeMath = (OfficeMath) doc.getChild(NodeType.OFFICE_MATH, 0, true);
        OfficeMathRenderer renderer = new OfficeMathRenderer(officeMath);
        
        // We can measure the size of the image that the OfficeMath object will create when we render it
        Assert.assertEquals(renderer.getSizeInPoints().getX(), 117.0, 0.1);
        Assert.assertEquals(renderer.getSizeInPoints().getY(), 12.9, 0.1);
        
        Assert.assertEquals(renderer.getBoundsInPoints().getWidth(), 117.0, 0.1);
        Assert.assertEquals(renderer.getBoundsInPoints().getHeight(), 12.9, 0.1);
        
        // Shapes with transparent parts may return different values here
        Assert.assertEquals(renderer.getOpaqueBoundsInPoints().getWidth(), 117.0, 0.1);
        Assert.assertEquals(renderer.getOpaqueBoundsInPoints().getHeight(), 14.7, 0.1);
        
        // Get the shape size in pixels, with linear scaling to a specific DPI
        Rectangle bounds = renderer.getBoundsInPixels(1.0f, 96.0f);
        Assert.assertEquals(bounds.getWidth(), 156.0);
        Assert.assertEquals(bounds.getHeight(), 18.0);
        
        // Get the shape size in pixels, but with a different DPI for the horizontal and vertical dimensions
        bounds = renderer.getBoundsInPixels(1.0f, 96.0f, 150.0f);
        Assert.assertEquals(bounds.getWidth(), 156.0);
        Assert.assertEquals(bounds.getHeight(), 27.0);
        
        // The opaque bounds may vary here also
        bounds = renderer.getOpaqueBoundsInPixels(1.0f, 96.0f);
        Assert.assertEquals(bounds.getWidth(), 156.0);
        Assert.assertEquals(bounds.getHeight(), 20.0);
        
        bounds = renderer.getOpaqueBoundsInPixels(1.0f, 96.0f, 150.0f);
        Assert.assertEquals(bounds.getWidth(), 156.0);
        Assert.assertEquals(bounds.getHeight(), 31.0);
      • getOpaqueBoundsInPoints

        public java.awt.geom.Rectangle2D.Float getOpaqueBoundsInPoints()
        
        Gets the opaque bounds of the shape in points.

        This property returns the opaque (i.e. transparent parts of the shape are ignored) bounding box of the shape. The bounds takes the shape rotation into account.

        Example:

        Shows how to measure and scale shapes.
        // Open a document that contains an OfficeMath object
        Document doc = new Document(getMyDir() + "Shape.OfficeMath.docx");
        
        // Create a renderer for the OfficeMath object
        OfficeMath officeMath = (OfficeMath) doc.getChild(NodeType.OFFICE_MATH, 0, true);
        OfficeMathRenderer renderer = new OfficeMathRenderer(officeMath);
        
        // We can measure the size of the image that the OfficeMath object will create when we render it
        Assert.assertEquals(renderer.getSizeInPoints().getX(), 117.0, 0.1);
        Assert.assertEquals(renderer.getSizeInPoints().getY(), 12.9, 0.1);
        
        Assert.assertEquals(renderer.getBoundsInPoints().getWidth(), 117.0, 0.1);
        Assert.assertEquals(renderer.getBoundsInPoints().getHeight(), 12.9, 0.1);
        
        // Shapes with transparent parts may return different values here
        Assert.assertEquals(renderer.getOpaqueBoundsInPoints().getWidth(), 117.0, 0.1);
        Assert.assertEquals(renderer.getOpaqueBoundsInPoints().getHeight(), 14.7, 0.1);
        
        // Get the shape size in pixels, with linear scaling to a specific DPI
        Rectangle bounds = renderer.getBoundsInPixels(1.0f, 96.0f);
        Assert.assertEquals(bounds.getWidth(), 156.0);
        Assert.assertEquals(bounds.getHeight(), 18.0);
        
        // Get the shape size in pixels, but with a different DPI for the horizontal and vertical dimensions
        bounds = renderer.getBoundsInPixels(1.0f, 96.0f, 150.0f);
        Assert.assertEquals(bounds.getWidth(), 156.0);
        Assert.assertEquals(bounds.getHeight(), 27.0);
        
        // The opaque bounds may vary here also
        bounds = renderer.getOpaqueBoundsInPixels(1.0f, 96.0f);
        Assert.assertEquals(bounds.getWidth(), 156.0);
        Assert.assertEquals(bounds.getHeight(), 20.0);
        
        bounds = renderer.getOpaqueBoundsInPixels(1.0f, 96.0f, 150.0f);
        Assert.assertEquals(bounds.getWidth(), 156.0);
        Assert.assertEquals(bounds.getHeight(), 31.0);
      • getSizeInPoints

        public java.awt.Dimension getSizeInPoints()
        
        Gets the actual size of the shape in points.

        This property returns the size of the actual (as rendered on the page) bounding box of the shape. The size takes into account shape rotation (if any).

        Example:

        Shows how to measure and scale shapes.
        // Open a document that contains an OfficeMath object
        Document doc = new Document(getMyDir() + "Shape.OfficeMath.docx");
        
        // Create a renderer for the OfficeMath object
        OfficeMath officeMath = (OfficeMath) doc.getChild(NodeType.OFFICE_MATH, 0, true);
        OfficeMathRenderer renderer = new OfficeMathRenderer(officeMath);
        
        // We can measure the size of the image that the OfficeMath object will create when we render it
        Assert.assertEquals(renderer.getSizeInPoints().getX(), 117.0, 0.1);
        Assert.assertEquals(renderer.getSizeInPoints().getY(), 12.9, 0.1);
        
        Assert.assertEquals(renderer.getBoundsInPoints().getWidth(), 117.0, 0.1);
        Assert.assertEquals(renderer.getBoundsInPoints().getHeight(), 12.9, 0.1);
        
        // Shapes with transparent parts may return different values here
        Assert.assertEquals(renderer.getOpaqueBoundsInPoints().getWidth(), 117.0, 0.1);
        Assert.assertEquals(renderer.getOpaqueBoundsInPoints().getHeight(), 14.7, 0.1);
        
        // Get the shape size in pixels, with linear scaling to a specific DPI
        Rectangle bounds = renderer.getBoundsInPixels(1.0f, 96.0f);
        Assert.assertEquals(bounds.getWidth(), 156.0);
        Assert.assertEquals(bounds.getHeight(), 18.0);
        
        // Get the shape size in pixels, but with a different DPI for the horizontal and vertical dimensions
        bounds = renderer.getBoundsInPixels(1.0f, 96.0f, 150.0f);
        Assert.assertEquals(bounds.getWidth(), 156.0);
        Assert.assertEquals(bounds.getHeight(), 27.0);
        
        // The opaque bounds may vary here also
        bounds = renderer.getOpaqueBoundsInPixels(1.0f, 96.0f);
        Assert.assertEquals(bounds.getWidth(), 156.0);
        Assert.assertEquals(bounds.getHeight(), 20.0);
        
        bounds = renderer.getOpaqueBoundsInPixels(1.0f, 96.0f, 150.0f);
        Assert.assertEquals(bounds.getWidth(), 156.0);
        Assert.assertEquals(bounds.getHeight(), 31.0);
    • Method Detail

      • getBoundsInPixels

        public java.awt.Rectangle getBoundsInPixels(float scale, float dpi)
        Calculates the bounds of the shape in pixels for a specified zoom factor and resolution.

        This method converts BoundsInPoints into rectangle in pixels.

        Parameters:
        scale - The zoom factor (1.0 is 100%).
        dpi - The resolution (horizontal and vertical) to convert from points to pixels (dots per inch).
        Returns:
        The actual (as rendered on the page) bounding box of the shape in pixels.

        Example:

        Shows how to measure and scale shapes.
        // Open a document that contains an OfficeMath object
        Document doc = new Document(getMyDir() + "Shape.OfficeMath.docx");
        
        // Create a renderer for the OfficeMath object
        OfficeMath officeMath = (OfficeMath) doc.getChild(NodeType.OFFICE_MATH, 0, true);
        OfficeMathRenderer renderer = new OfficeMathRenderer(officeMath);
        
        // We can measure the size of the image that the OfficeMath object will create when we render it
        Assert.assertEquals(renderer.getSizeInPoints().getX(), 117.0, 0.1);
        Assert.assertEquals(renderer.getSizeInPoints().getY(), 12.9, 0.1);
        
        Assert.assertEquals(renderer.getBoundsInPoints().getWidth(), 117.0, 0.1);
        Assert.assertEquals(renderer.getBoundsInPoints().getHeight(), 12.9, 0.1);
        
        // Shapes with transparent parts may return different values here
        Assert.assertEquals(renderer.getOpaqueBoundsInPoints().getWidth(), 117.0, 0.1);
        Assert.assertEquals(renderer.getOpaqueBoundsInPoints().getHeight(), 14.7, 0.1);
        
        // Get the shape size in pixels, with linear scaling to a specific DPI
        Rectangle bounds = renderer.getBoundsInPixels(1.0f, 96.0f);
        Assert.assertEquals(bounds.getWidth(), 156.0);
        Assert.assertEquals(bounds.getHeight(), 18.0);
        
        // Get the shape size in pixels, but with a different DPI for the horizontal and vertical dimensions
        bounds = renderer.getBoundsInPixels(1.0f, 96.0f, 150.0f);
        Assert.assertEquals(bounds.getWidth(), 156.0);
        Assert.assertEquals(bounds.getHeight(), 27.0);
        
        // The opaque bounds may vary here also
        bounds = renderer.getOpaqueBoundsInPixels(1.0f, 96.0f);
        Assert.assertEquals(bounds.getWidth(), 156.0);
        Assert.assertEquals(bounds.getHeight(), 20.0);
        
        bounds = renderer.getOpaqueBoundsInPixels(1.0f, 96.0f, 150.0f);
        Assert.assertEquals(bounds.getWidth(), 156.0);
        Assert.assertEquals(bounds.getHeight(), 31.0);
      • getBoundsInPixels

        public java.awt.Rectangle getBoundsInPixels(float scale, float horizontalDpi, float verticalDpi)
        Calculates the bounds of the shape in pixels for a specified zoom factor and resolution.

        This method converts BoundsInPoints into rectangle in pixels.

        Parameters:
        scale - The zoom factor (1.0 is 100%).
        horizontalDpi - The horizontal resolution to convert from points to pixels (dots per inch).
        verticalDpi - The vertical resolution to convert from points to pixels (dots per inch).
        Returns:
        The actual (as rendered on the page) bounding box of the shape in pixels.

        Example:

        Shows how to measure and scale shapes.
        // Open a document that contains an OfficeMath object
        Document doc = new Document(getMyDir() + "Shape.OfficeMath.docx");
        
        // Create a renderer for the OfficeMath object
        OfficeMath officeMath = (OfficeMath) doc.getChild(NodeType.OFFICE_MATH, 0, true);
        OfficeMathRenderer renderer = new OfficeMathRenderer(officeMath);
        
        // We can measure the size of the image that the OfficeMath object will create when we render it
        Assert.assertEquals(renderer.getSizeInPoints().getX(), 117.0, 0.1);
        Assert.assertEquals(renderer.getSizeInPoints().getY(), 12.9, 0.1);
        
        Assert.assertEquals(renderer.getBoundsInPoints().getWidth(), 117.0, 0.1);
        Assert.assertEquals(renderer.getBoundsInPoints().getHeight(), 12.9, 0.1);
        
        // Shapes with transparent parts may return different values here
        Assert.assertEquals(renderer.getOpaqueBoundsInPoints().getWidth(), 117.0, 0.1);
        Assert.assertEquals(renderer.getOpaqueBoundsInPoints().getHeight(), 14.7, 0.1);
        
        // Get the shape size in pixels, with linear scaling to a specific DPI
        Rectangle bounds = renderer.getBoundsInPixels(1.0f, 96.0f);
        Assert.assertEquals(bounds.getWidth(), 156.0);
        Assert.assertEquals(bounds.getHeight(), 18.0);
        
        // Get the shape size in pixels, but with a different DPI for the horizontal and vertical dimensions
        bounds = renderer.getBoundsInPixels(1.0f, 96.0f, 150.0f);
        Assert.assertEquals(bounds.getWidth(), 156.0);
        Assert.assertEquals(bounds.getHeight(), 27.0);
        
        // The opaque bounds may vary here also
        bounds = renderer.getOpaqueBoundsInPixels(1.0f, 96.0f);
        Assert.assertEquals(bounds.getWidth(), 156.0);
        Assert.assertEquals(bounds.getHeight(), 20.0);
        
        bounds = renderer.getOpaqueBoundsInPixels(1.0f, 96.0f, 150.0f);
        Assert.assertEquals(bounds.getWidth(), 156.0);
        Assert.assertEquals(bounds.getHeight(), 31.0);
      • getOpaqueBoundsInPixels

        public java.awt.Rectangle getOpaqueBoundsInPixels(float scale, float dpi)
                                         throws java.lang.Exception
        Calculates the opaque bounds of the shape in pixels for a specified zoom factor and resolution.

        This method converts OpaqueBoundsInPoints into rectangle in pixels and it is useful when you want to create a bitmap for rendering the shape with only opaque part of the shape.

        Parameters:
        scale - The zoom factor (1.0 is 100%).
        dpi - The resolution to convert from points to pixels (dots per inch).
        Returns:
        The opaque rectangle of the shape in pixels.

        Example:

        Shows how to measure and scale shapes.
        // Open a document that contains an OfficeMath object
        Document doc = new Document(getMyDir() + "Shape.OfficeMath.docx");
        
        // Create a renderer for the OfficeMath object
        OfficeMath officeMath = (OfficeMath) doc.getChild(NodeType.OFFICE_MATH, 0, true);
        OfficeMathRenderer renderer = new OfficeMathRenderer(officeMath);
        
        // We can measure the size of the image that the OfficeMath object will create when we render it
        Assert.assertEquals(renderer.getSizeInPoints().getX(), 117.0, 0.1);
        Assert.assertEquals(renderer.getSizeInPoints().getY(), 12.9, 0.1);
        
        Assert.assertEquals(renderer.getBoundsInPoints().getWidth(), 117.0, 0.1);
        Assert.assertEquals(renderer.getBoundsInPoints().getHeight(), 12.9, 0.1);
        
        // Shapes with transparent parts may return different values here
        Assert.assertEquals(renderer.getOpaqueBoundsInPoints().getWidth(), 117.0, 0.1);
        Assert.assertEquals(renderer.getOpaqueBoundsInPoints().getHeight(), 14.7, 0.1);
        
        // Get the shape size in pixels, with linear scaling to a specific DPI
        Rectangle bounds = renderer.getBoundsInPixels(1.0f, 96.0f);
        Assert.assertEquals(bounds.getWidth(), 156.0);
        Assert.assertEquals(bounds.getHeight(), 18.0);
        
        // Get the shape size in pixels, but with a different DPI for the horizontal and vertical dimensions
        bounds = renderer.getBoundsInPixels(1.0f, 96.0f, 150.0f);
        Assert.assertEquals(bounds.getWidth(), 156.0);
        Assert.assertEquals(bounds.getHeight(), 27.0);
        
        // The opaque bounds may vary here also
        bounds = renderer.getOpaqueBoundsInPixels(1.0f, 96.0f);
        Assert.assertEquals(bounds.getWidth(), 156.0);
        Assert.assertEquals(bounds.getHeight(), 20.0);
        
        bounds = renderer.getOpaqueBoundsInPixels(1.0f, 96.0f, 150.0f);
        Assert.assertEquals(bounds.getWidth(), 156.0);
        Assert.assertEquals(bounds.getHeight(), 31.0);
      • getOpaqueBoundsInPixels

        public java.awt.Rectangle getOpaqueBoundsInPixels(float scale, float horizontalDpi, float verticalDpi)
                                         throws java.lang.Exception
        Calculates the opaque bounds of the shape in pixels for a specified zoom factor and resolution.

        This method converts OpaqueBoundsInPoints into rectangle in pixels and it is useful when you want to create a bitmap for rendering the shape with only opaque part of the shape.

        Parameters:
        scale - The zoom factor (1.0 is 100%).
        horizontalDpi - The horizontal resolution to convert from points to pixels (dots per inch).
        verticalDpi - The vertical resolution to convert from points to pixels (dots per inch).
        Returns:
        The opaque rectangle of the shape in pixels.

        Example:

        Shows how to measure and scale shapes.
        // Open a document that contains an OfficeMath object
        Document doc = new Document(getMyDir() + "Shape.OfficeMath.docx");
        
        // Create a renderer for the OfficeMath object
        OfficeMath officeMath = (OfficeMath) doc.getChild(NodeType.OFFICE_MATH, 0, true);
        OfficeMathRenderer renderer = new OfficeMathRenderer(officeMath);
        
        // We can measure the size of the image that the OfficeMath object will create when we render it
        Assert.assertEquals(renderer.getSizeInPoints().getX(), 117.0, 0.1);
        Assert.assertEquals(renderer.getSizeInPoints().getY(), 12.9, 0.1);
        
        Assert.assertEquals(renderer.getBoundsInPoints().getWidth(), 117.0, 0.1);
        Assert.assertEquals(renderer.getBoundsInPoints().getHeight(), 12.9, 0.1);
        
        // Shapes with transparent parts may return different values here
        Assert.assertEquals(renderer.getOpaqueBoundsInPoints().getWidth(), 117.0, 0.1);
        Assert.assertEquals(renderer.getOpaqueBoundsInPoints().getHeight(), 14.7, 0.1);
        
        // Get the shape size in pixels, with linear scaling to a specific DPI
        Rectangle bounds = renderer.getBoundsInPixels(1.0f, 96.0f);
        Assert.assertEquals(bounds.getWidth(), 156.0);
        Assert.assertEquals(bounds.getHeight(), 18.0);
        
        // Get the shape size in pixels, but with a different DPI for the horizontal and vertical dimensions
        bounds = renderer.getBoundsInPixels(1.0f, 96.0f, 150.0f);
        Assert.assertEquals(bounds.getWidth(), 156.0);
        Assert.assertEquals(bounds.getHeight(), 27.0);
        
        // The opaque bounds may vary here also
        bounds = renderer.getOpaqueBoundsInPixels(1.0f, 96.0f);
        Assert.assertEquals(bounds.getWidth(), 156.0);
        Assert.assertEquals(bounds.getHeight(), 20.0);
        
        bounds = renderer.getOpaqueBoundsInPixels(1.0f, 96.0f, 150.0f);
        Assert.assertEquals(bounds.getWidth(), 156.0);
        Assert.assertEquals(bounds.getHeight(), 31.0);
      • getSizeInPixels

        public java.awt.Dimension getSizeInPixels(float scale, float dpi)
        Calculates the size of the shape in pixels for a specified zoom factor and resolution.

        This method converts SizeInPoints into size in pixels and it is useful when you want to create a bitmap for rendering the shape neatly onto the bitmap.

        Parameters:
        scale - The zoom factor (1.0 is 100%).
        dpi - The resolution (horizontal and vertical) to convert from points to pixels (dots per inch).
        Returns:
        The size of the shape in pixels.

        Example:

        Shows how to measure and scale shapes.
        // Open a document that contains an OfficeMath object
        Document doc = new Document(getMyDir() + "Shape.OfficeMath.docx");
        
        // Create a renderer for the OfficeMath object
        OfficeMath officeMath = (OfficeMath) doc.getChild(NodeType.OFFICE_MATH, 0, true);
        OfficeMathRenderer renderer = new OfficeMathRenderer(officeMath);
        
        // We can measure the size of the image that the OfficeMath object will create when we render it
        Assert.assertEquals(renderer.getSizeInPoints().getX(), 117.0, 0.1);
        Assert.assertEquals(renderer.getSizeInPoints().getY(), 12.9, 0.1);
        
        Assert.assertEquals(renderer.getBoundsInPoints().getWidth(), 117.0, 0.1);
        Assert.assertEquals(renderer.getBoundsInPoints().getHeight(), 12.9, 0.1);
        
        // Shapes with transparent parts may return different values here
        Assert.assertEquals(renderer.getOpaqueBoundsInPoints().getWidth(), 117.0, 0.1);
        Assert.assertEquals(renderer.getOpaqueBoundsInPoints().getHeight(), 14.7, 0.1);
        
        // Get the shape size in pixels, with linear scaling to a specific DPI
        Rectangle bounds = renderer.getBoundsInPixels(1.0f, 96.0f);
        Assert.assertEquals(bounds.getWidth(), 156.0);
        Assert.assertEquals(bounds.getHeight(), 18.0);
        
        // Get the shape size in pixels, but with a different DPI for the horizontal and vertical dimensions
        bounds = renderer.getBoundsInPixels(1.0f, 96.0f, 150.0f);
        Assert.assertEquals(bounds.getWidth(), 156.0);
        Assert.assertEquals(bounds.getHeight(), 27.0);
        
        // The opaque bounds may vary here also
        bounds = renderer.getOpaqueBoundsInPixels(1.0f, 96.0f);
        Assert.assertEquals(bounds.getWidth(), 156.0);
        Assert.assertEquals(bounds.getHeight(), 20.0);
        
        bounds = renderer.getOpaqueBoundsInPixels(1.0f, 96.0f, 150.0f);
        Assert.assertEquals(bounds.getWidth(), 156.0);
        Assert.assertEquals(bounds.getHeight(), 31.0);
      • getSizeInPixels

        public java.awt.Dimension getSizeInPixels(float scale, float horizontalDpi, float verticalDpi)
        Calculates the size of the shape in pixels for a specified zoom factor and resolution.

        This method converts SizeInPoints into size in pixels and it is useful when you want to create a bitmap for rendering the shape neatly onto the bitmap.

        Parameters:
        scale - The zoom factor (1.0 is 100%).
        horizontalDpi - The horizontal resolution to convert from points to pixels (dots per inch).
        verticalDpi - The vertical resolution to convert from points to pixels (dots per inch).
        Returns:
        The size of the shape in pixels.

        Example:

        Shows how to measure and scale shapes.
        // Open a document that contains an OfficeMath object
        Document doc = new Document(getMyDir() + "Shape.OfficeMath.docx");
        
        // Create a renderer for the OfficeMath object
        OfficeMath officeMath = (OfficeMath) doc.getChild(NodeType.OFFICE_MATH, 0, true);
        OfficeMathRenderer renderer = new OfficeMathRenderer(officeMath);
        
        // We can measure the size of the image that the OfficeMath object will create when we render it
        Assert.assertEquals(renderer.getSizeInPoints().getX(), 117.0, 0.1);
        Assert.assertEquals(renderer.getSizeInPoints().getY(), 12.9, 0.1);
        
        Assert.assertEquals(renderer.getBoundsInPoints().getWidth(), 117.0, 0.1);
        Assert.assertEquals(renderer.getBoundsInPoints().getHeight(), 12.9, 0.1);
        
        // Shapes with transparent parts may return different values here
        Assert.assertEquals(renderer.getOpaqueBoundsInPoints().getWidth(), 117.0, 0.1);
        Assert.assertEquals(renderer.getOpaqueBoundsInPoints().getHeight(), 14.7, 0.1);
        
        // Get the shape size in pixels, with linear scaling to a specific DPI
        Rectangle bounds = renderer.getBoundsInPixels(1.0f, 96.0f);
        Assert.assertEquals(bounds.getWidth(), 156.0);
        Assert.assertEquals(bounds.getHeight(), 18.0);
        
        // Get the shape size in pixels, but with a different DPI for the horizontal and vertical dimensions
        bounds = renderer.getBoundsInPixels(1.0f, 96.0f, 150.0f);
        Assert.assertEquals(bounds.getWidth(), 156.0);
        Assert.assertEquals(bounds.getHeight(), 27.0);
        
        // The opaque bounds may vary here also
        bounds = renderer.getOpaqueBoundsInPixels(1.0f, 96.0f);
        Assert.assertEquals(bounds.getWidth(), 156.0);
        Assert.assertEquals(bounds.getHeight(), 20.0);
        
        bounds = renderer.getOpaqueBoundsInPixels(1.0f, 96.0f, 150.0f);
        Assert.assertEquals(bounds.getWidth(), 156.0);
        Assert.assertEquals(bounds.getHeight(), 31.0);
      • renderToScale

        public java.awt.geom.Point2D.Float renderToScale(java.awt.Graphics2D graphics, float x, float y, float scale)
                           throws java.lang.Exception
        Renders the shape into a java.awt.Graphics2D object to a specified scale.
        Parameters:
        graphics - The object where to render to.
        x - The X coordinate (in world units) of the top left corner of the rendered shape.
        y - The Y coordinate (in world units) of the top left corner of the rendered shape.
        scale - The scale for rendering the shape (1.0 is 100%).
        Returns:
        The width and height (in world units) of the rendered shape.

        Example:

        Shows how to render a shape with a Graphics object.
        public static class JFrameGraphics extends JPanel {
            public void paint(Graphics graphics) {
                try {
                    // Open a document and get its first shape, which is a chart
                    Document doc = new Document(getMyDir() + "Shape.VarietyOfShapes.docx");
        
                    Shape shape = (Shape) doc.getChild(NodeType.SHAPE, 1, true);
        
                    // Create a ShapeRenderer instance and a Graphics object
                    // The ShapeRenderer will render the shape that is passed during construction over the Graphics object
                    // Whatever is rendered on this Graphics object will be displayed on the screen inside this form
                    ShapeRenderer renderer = new ShapeRenderer(shape);
        
                    // Call this method on the renderer to render the chart in the passed Graphics object,
                    // on a specified x/y coordinate and scale
                    renderer.renderToScale((Graphics2D) graphics, 0f, 0f, 1.5f);
        
                    // Get another shape from the document, and render it to a specific size instead of a linear scale
                    GroupShape groupShape = (GroupShape) doc.getChild(NodeType.GROUP_SHAPE, 0, true);
                    renderer = new ShapeRenderer(groupShape);
                    renderer.renderToSize((Graphics2D) graphics, 500f, 400f, 100f, 200f);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        
            public static void main(String[] args) {
                // Create windows form for present shapes
                JFrame frame = new JFrame("Aspose example");
                frame.getContentPane().add(new JFrameGraphics());
                frame.setSize(1000, 800);
                frame.setVisible(true);
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setResizable(false);
            }
      • renderToSize

        public float renderToSize(java.awt.Graphics2D graphics, float x, float y, float width, float height)
                          throws java.lang.Exception
        Renders the shape into a java.awt.Graphics2D object to a specified size.
        Parameters:
        graphics - The object where to render to.
        x - The X coordinate (in world units) of the top left corner of the rendered shape.
        y - The Y coordinate (in world units) of the top left corner of the rendered shape.
        width - The maximum width (in world units) that can be occupied by the rendered shape.
        height - The maximum height (in world units) that can be occupied by the rendered shape.
        Returns:
        The scale that was automatically calculated for the rendered shape to fit the specified size.

        Example:

        Shows how to render a shape with a Graphics object.
        public static class JFrameGraphics extends JPanel {
            public void paint(Graphics graphics) {
                try {
                    // Open a document and get its first shape, which is a chart
                    Document doc = new Document(getMyDir() + "Shape.VarietyOfShapes.docx");
        
                    Shape shape = (Shape) doc.getChild(NodeType.SHAPE, 1, true);
        
                    // Create a ShapeRenderer instance and a Graphics object
                    // The ShapeRenderer will render the shape that is passed during construction over the Graphics object
                    // Whatever is rendered on this Graphics object will be displayed on the screen inside this form
                    ShapeRenderer renderer = new ShapeRenderer(shape);
        
                    // Call this method on the renderer to render the chart in the passed Graphics object,
                    // on a specified x/y coordinate and scale
                    renderer.renderToScale((Graphics2D) graphics, 0f, 0f, 1.5f);
        
                    // Get another shape from the document, and render it to a specific size instead of a linear scale
                    GroupShape groupShape = (GroupShape) doc.getChild(NodeType.GROUP_SHAPE, 0, true);
                    renderer = new ShapeRenderer(groupShape);
                    renderer.renderToSize((Graphics2D) graphics, 500f, 400f, 100f, 200f);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        
            public static void main(String[] args) {
                // Create windows form for present shapes
                JFrame frame = new JFrame("Aspose example");
                frame.getContentPane().add(new JFrameGraphics());
                frame.setSize(1000, 800);
                frame.setVisible(true);
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setResizable(false);
            }
      • save

        public void save(java.io.OutputStream stream, ImageSaveOptions saveOptions)
                 throws java.lang.Exception
        Renders the shape into an image and saves into a stream.
        Parameters:
        stream - The stream where to save the image of the shape.
        saveOptions - Specifies the options that control how the shape is rendered and saved. Can be null. If this is null, the image will be saved in the PNG format.

        Example:

        Shows how to export shapes to files in the local file system using a shape renderer.
        // Open a document that contains shapes and get its shape collection
        Document doc = new Document(getMyDir() + "Shape.VarietyOfShapes.docx");
        NodeCollection shapes = doc.getChildNodes(NodeType.SHAPE, true);
        Assert.assertEquals(7, shapes.getCount());
        
        // There are 7 shapes in the document, with one group shape with 2 child shapes
        // The child shapes will be rendered but their parent group shape will be skipped, so we will see 6 output files
        for (Shape shape : (Iterable<Shape>) shapes) {
            ShapeRenderer renderer = shape.getShapeRenderer();
            ImageSaveOptions options = new ImageSaveOptions(SaveFormat.PNG);
            renderer.save(getArtifactsDir() + MessageFormat.format("Shape.ShapeRenderer {0}.png", shape.getName()), options);
        }
      • save

        public void save(java.lang.String fileName, ImageSaveOptions saveOptions)
                 throws java.lang.Exception
        Renders the shape into an image and saves into a file.
        Parameters:
        fileName - The name for the image file. If a file with the specified name already exists, the existing file is overwritten.
        saveOptions - Specifies the options that control how the shape is rendered and saved. Can be null.

        Example:

        Shows how to convert specific object into image
        Document doc = new Document(getMyDir() + "Shape.OfficeMath.docx");
        
        //Get OfficeMath node from the document and render this as image (you can also do the same with the Shape node)
        OfficeMath math = (OfficeMath) doc.getChild(NodeType.OFFICE_MATH, 0, true);
        math.getMathRenderer().save(getArtifactsDir() + "Shape.OfficeMath.svg", new ImageSaveOptions(SaveFormat.SVG));