com.aspose.words

Class Stroke

  • java.lang.Object
    • com.aspose.words.Stroke
public class Stroke 
extends java.lang.Object

Defines a stroke for a shape.

Use the Shape.Stroke property to access stroke properties of a shape. You do not create instances of the Stroke class directly.

Example:

Shows how change stroke properties
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// Create a new shape of type Rectangle
Shape rectangle = new Shape(doc, ShapeType.RECTANGLE);

//Change stroke properties
Stroke stroke = rectangle.getStroke();
stroke.setOn(true);
stroke.setWeight(5.0);
stroke.setColor(Color.RED);
stroke.setDashStyle(DashStyle.SHORT_DASH_DOT_DOT);
stroke.setJoinStyle(JoinStyle.MITER);
stroke.setEndCap(EndCap.SQUARE);
stroke.setLineStyle(ShapeLineStyle.TRIPLE);

//Insert shape object
builder.insertNode(rectangle);
See Also:
Shape.Stroke

Property Getters/Setters Summary
java.awt.ColorgetColor()
void
setColor(java.awt.Colorvalue)
           Defines the color of a stroke.
java.awt.ColorgetColor2()
void
setColor2(java.awt.Colorvalue)
           Defines a second color for a stroke.
intgetDashStyle()
void
setDashStyle(intvalue)
           Specifies the dot and dash pattern for a stroke. The value of the property is DashStyle integer constant.
intgetEndArrowLength()
void
           Defines the arrowhead length for the end of a stroke. The value of the property is ArrowLength integer constant.
intgetEndArrowType()
void
setEndArrowType(intvalue)
           Defines the arrowhead for the end of a stroke. The value of the property is ArrowType integer constant.
intgetEndArrowWidth()
void
           Defines the arrowhead width for the end of a stroke. The value of the property is ArrowWidth integer constant.
intgetEndCap()
void
setEndCap(intvalue)
           Defines the cap style for the end of a stroke. The value of the property is EndCap integer constant.
byte[]getImageBytes()
Defines the image for a stroke image or pattern fill.
intgetJoinStyle()
void
setJoinStyle(intvalue)
           Defines the join style of a polyline. The value of the property is JoinStyle integer constant.
intgetLineStyle()
void
setLineStyle(intvalue)
           Defines the line style of the stroke. The value of the property is ShapeLineStyle integer constant.
booleangetOn()
void
setOn(booleanvalue)
           Defines whether the path will be stroked.
doublegetOpacity()
void
setOpacity(doublevalue)
           Defines the amount of transparency of a stroke. Valid range is from 0 to 1.
intgetStartArrowLength()
void
           Defines the arrowhead length for the start of a stroke. The value of the property is ArrowLength integer constant.
intgetStartArrowType()
void
           Defines the arrowhead for the start of a stroke. The value of the property is ArrowType integer constant.
intgetStartArrowWidth()
void
           Defines the arrowhead width for the start of a stroke. The value of the property is ArrowWidth integer constant.
doublegetWeight()
void
setWeight(doublevalue)
           Defines the brush thickness that strokes the path of a shape in points.
 

    • Property Getters/Setters Detail

      • getColor/setColor

        public java.awt.Color getColor() / public void setColor(java.awt.Color value)
        
        Defines the color of a stroke.

        The default value is java.awt.Color.BLACK.

        Example:

        Shows to create a variety of shapes.
        Document doc = new Document();
        DocumentBuilder builder = new DocumentBuilder(doc);
        
        // Draw a dotted horizontal half-transparent red line with an arrow on the left end and a diamond on the other
        Shape arrow = new Shape(doc, ShapeType.LINE);
        arrow.setWidth(200.0);
        arrow.getStroke().setColor(Color.RED);
        arrow.getStroke().setStartArrowType(ArrowType.ARROW);
        arrow.getStroke().setStartArrowLength(ArrowLength.LONG);
        arrow.getStroke().setStartArrowWidth(ArrowWidth.WIDE);
        arrow.getStroke().setEndArrowType(ArrowType.DIAMOND);
        arrow.getStroke().setEndArrowLength(ArrowLength.LONG);
        arrow.getStroke().setEndArrowWidth(ArrowWidth.WIDE);
        arrow.getStroke().setDashStyle(DashStyle.DASH);
        arrow.getStroke().setOpacity(0.5);
        
        Assert.assertEquals(arrow.getStroke().getJoinStyle(), JoinStyle.MITER);
        
        builder.insertNode(arrow);
        
        // Draw a thick black diagonal line with rounded ends
        Shape line = new Shape(doc, ShapeType.LINE);
        line.setTop(40.0);
        line.setWidth(200.0);
        line.setHeight(20.0);
        line.setStrokeWeight(5.0);
        line.getStroke().setEndCap(EndCap.ROUND);
        
        builder.insertNode(line);
        
        // Draw an arrow with a green fill
        Shape filledInArrow = new Shape(doc, ShapeType.ARROW);
        filledInArrow.setWidth(200.0);
        filledInArrow.setHeight(40.0);
        filledInArrow.setTop(100.0);
        filledInArrow.getFill().setColor(Color.GREEN);
        filledInArrow.getFill().setOn(true);
        
        builder.insertNode(filledInArrow);
        
        // Draw an arrow filled in with the Aspose logo and flip its orientation
        Shape filledInArrowImg = new Shape(doc, ShapeType.ARROW);
        filledInArrowImg.setWidth(200.0);
        filledInArrowImg.setHeight(40.0);
        filledInArrowImg.setTop(160.0);
        filledInArrowImg.setFlipOrientation(FlipOrientation.BOTH);
        
        BufferedImage image = ImageIO.read(getAsposelogoUri().toURL().openStream());
        Graphics2D graphics2D = image.createGraphics();
        
        // When we flipped the orientation of our arrow, the image content was flipped too
        // If we want it to be displayed the right side up, we have to reverse the arrow flip on the image
        AffineTransform at = new AffineTransform();
        at.concatenate(AffineTransform.getScaleInstance(1, -1));
        at.concatenate(AffineTransform.getTranslateInstance(0, -image.getHeight()));
        graphics2D.transform(at);
        graphics2D.drawImage(image, 0, 0, null);
        graphics2D.dispose();
        
        filledInArrowImg.getImageData().setImage(image);
        builder.insertNode(filledInArrowImg);
        
        filledInArrowImg.getStroke().setJoinStyle(JoinStyle.ROUND);
        
        doc.save(getArtifactsDir() + "Drawing.VariousShapes.docx");
      • getColor2/setColor2

        public java.awt.Color getColor2() / public void setColor2(java.awt.Color value)
        
        Defines a second color for a stroke.

        The default value is java.awt.Color.WHITE.

        Example:

        Shows how to process shape stroke features from older versions of Microsoft Word.
        // Open a document which contains a rectangle with a thick, two-tone-patterned outline
        // These features cannot be recreated in new versions of Microsoft Word, so we will open an older .doc file
        Document doc = new Document(getMyDir() + "Shape.StrokePattern.doc");
        
        // Get the first shape's stroke
        Shape shape = (Shape) doc.getChild(NodeType.SHAPE, 0, true);
        Stroke s = shape.getStroke();
        
        // Every stroke will have a Color attribute, but only strokes from older Word versions have a Color2 attribute,
        // since the two-tone pattern line feature which requires the Color2 attribute is no longer supported
        Assert.assertEquals(s.getColor(), new Color((128), (0), (0), (255)));
        Assert.assertEquals(s.getColor2(), new Color((255), (255), (0), (255)));
        
        // This attribute contains the image data for the pattern, which we can save to our local file system
        Assert.assertNotNull(s.getImageBytes());
        ByteArrayInputStream imageInputStream = new ByteArrayInputStream(s.getImageBytes());
        BufferedImage bImage = ImageIO.read(imageInputStream);
        ImageIO.write(bImage, "png", new File(getArtifactsDir() + "Drawing.StrokePattern.png"));
      • getDashStyle/setDashStyle

        public int getDashStyle() / public void setDashStyle(int value)
        
        Specifies the dot and dash pattern for a stroke. The value of the property is DashStyle integer constant.

        The default value is DashStyle.SOLID.

        Example:

        Shows to create a variety of shapes.
        Document doc = new Document();
        DocumentBuilder builder = new DocumentBuilder(doc);
        
        // Draw a dotted horizontal half-transparent red line with an arrow on the left end and a diamond on the other
        Shape arrow = new Shape(doc, ShapeType.LINE);
        arrow.setWidth(200.0);
        arrow.getStroke().setColor(Color.RED);
        arrow.getStroke().setStartArrowType(ArrowType.ARROW);
        arrow.getStroke().setStartArrowLength(ArrowLength.LONG);
        arrow.getStroke().setStartArrowWidth(ArrowWidth.WIDE);
        arrow.getStroke().setEndArrowType(ArrowType.DIAMOND);
        arrow.getStroke().setEndArrowLength(ArrowLength.LONG);
        arrow.getStroke().setEndArrowWidth(ArrowWidth.WIDE);
        arrow.getStroke().setDashStyle(DashStyle.DASH);
        arrow.getStroke().setOpacity(0.5);
        
        Assert.assertEquals(arrow.getStroke().getJoinStyle(), JoinStyle.MITER);
        
        builder.insertNode(arrow);
        
        // Draw a thick black diagonal line with rounded ends
        Shape line = new Shape(doc, ShapeType.LINE);
        line.setTop(40.0);
        line.setWidth(200.0);
        line.setHeight(20.0);
        line.setStrokeWeight(5.0);
        line.getStroke().setEndCap(EndCap.ROUND);
        
        builder.insertNode(line);
        
        // Draw an arrow with a green fill
        Shape filledInArrow = new Shape(doc, ShapeType.ARROW);
        filledInArrow.setWidth(200.0);
        filledInArrow.setHeight(40.0);
        filledInArrow.setTop(100.0);
        filledInArrow.getFill().setColor(Color.GREEN);
        filledInArrow.getFill().setOn(true);
        
        builder.insertNode(filledInArrow);
        
        // Draw an arrow filled in with the Aspose logo and flip its orientation
        Shape filledInArrowImg = new Shape(doc, ShapeType.ARROW);
        filledInArrowImg.setWidth(200.0);
        filledInArrowImg.setHeight(40.0);
        filledInArrowImg.setTop(160.0);
        filledInArrowImg.setFlipOrientation(FlipOrientation.BOTH);
        
        BufferedImage image = ImageIO.read(getAsposelogoUri().toURL().openStream());
        Graphics2D graphics2D = image.createGraphics();
        
        // When we flipped the orientation of our arrow, the image content was flipped too
        // If we want it to be displayed the right side up, we have to reverse the arrow flip on the image
        AffineTransform at = new AffineTransform();
        at.concatenate(AffineTransform.getScaleInstance(1, -1));
        at.concatenate(AffineTransform.getTranslateInstance(0, -image.getHeight()));
        graphics2D.transform(at);
        graphics2D.drawImage(image, 0, 0, null);
        graphics2D.dispose();
        
        filledInArrowImg.getImageData().setImage(image);
        builder.insertNode(filledInArrowImg);
        
        filledInArrowImg.getStroke().setJoinStyle(JoinStyle.ROUND);
        
        doc.save(getArtifactsDir() + "Drawing.VariousShapes.docx");
      • getEndArrowLength/setEndArrowLength

        public int getEndArrowLength() / public void setEndArrowLength(int value)
        
        Defines the arrowhead length for the end of a stroke. The value of the property is ArrowLength integer constant.

        The default value is ArrowLength.MEDIUM.

        Example:

        Shows to create a variety of shapes.
        Document doc = new Document();
        DocumentBuilder builder = new DocumentBuilder(doc);
        
        // Draw a dotted horizontal half-transparent red line with an arrow on the left end and a diamond on the other
        Shape arrow = new Shape(doc, ShapeType.LINE);
        arrow.setWidth(200.0);
        arrow.getStroke().setColor(Color.RED);
        arrow.getStroke().setStartArrowType(ArrowType.ARROW);
        arrow.getStroke().setStartArrowLength(ArrowLength.LONG);
        arrow.getStroke().setStartArrowWidth(ArrowWidth.WIDE);
        arrow.getStroke().setEndArrowType(ArrowType.DIAMOND);
        arrow.getStroke().setEndArrowLength(ArrowLength.LONG);
        arrow.getStroke().setEndArrowWidth(ArrowWidth.WIDE);
        arrow.getStroke().setDashStyle(DashStyle.DASH);
        arrow.getStroke().setOpacity(0.5);
        
        Assert.assertEquals(arrow.getStroke().getJoinStyle(), JoinStyle.MITER);
        
        builder.insertNode(arrow);
        
        // Draw a thick black diagonal line with rounded ends
        Shape line = new Shape(doc, ShapeType.LINE);
        line.setTop(40.0);
        line.setWidth(200.0);
        line.setHeight(20.0);
        line.setStrokeWeight(5.0);
        line.getStroke().setEndCap(EndCap.ROUND);
        
        builder.insertNode(line);
        
        // Draw an arrow with a green fill
        Shape filledInArrow = new Shape(doc, ShapeType.ARROW);
        filledInArrow.setWidth(200.0);
        filledInArrow.setHeight(40.0);
        filledInArrow.setTop(100.0);
        filledInArrow.getFill().setColor(Color.GREEN);
        filledInArrow.getFill().setOn(true);
        
        builder.insertNode(filledInArrow);
        
        // Draw an arrow filled in with the Aspose logo and flip its orientation
        Shape filledInArrowImg = new Shape(doc, ShapeType.ARROW);
        filledInArrowImg.setWidth(200.0);
        filledInArrowImg.setHeight(40.0);
        filledInArrowImg.setTop(160.0);
        filledInArrowImg.setFlipOrientation(FlipOrientation.BOTH);
        
        BufferedImage image = ImageIO.read(getAsposelogoUri().toURL().openStream());
        Graphics2D graphics2D = image.createGraphics();
        
        // When we flipped the orientation of our arrow, the image content was flipped too
        // If we want it to be displayed the right side up, we have to reverse the arrow flip on the image
        AffineTransform at = new AffineTransform();
        at.concatenate(AffineTransform.getScaleInstance(1, -1));
        at.concatenate(AffineTransform.getTranslateInstance(0, -image.getHeight()));
        graphics2D.transform(at);
        graphics2D.drawImage(image, 0, 0, null);
        graphics2D.dispose();
        
        filledInArrowImg.getImageData().setImage(image);
        builder.insertNode(filledInArrowImg);
        
        filledInArrowImg.getStroke().setJoinStyle(JoinStyle.ROUND);
        
        doc.save(getArtifactsDir() + "Drawing.VariousShapes.docx");
      • getEndArrowType/setEndArrowType

        public int getEndArrowType() / public void setEndArrowType(int value)
        
        Defines the arrowhead for the end of a stroke. The value of the property is ArrowType integer constant.

        The default value is ArrowType.NONE.

        Example:

        Shows to create a variety of shapes.
        Document doc = new Document();
        DocumentBuilder builder = new DocumentBuilder(doc);
        
        // Draw a dotted horizontal half-transparent red line with an arrow on the left end and a diamond on the other
        Shape arrow = new Shape(doc, ShapeType.LINE);
        arrow.setWidth(200.0);
        arrow.getStroke().setColor(Color.RED);
        arrow.getStroke().setStartArrowType(ArrowType.ARROW);
        arrow.getStroke().setStartArrowLength(ArrowLength.LONG);
        arrow.getStroke().setStartArrowWidth(ArrowWidth.WIDE);
        arrow.getStroke().setEndArrowType(ArrowType.DIAMOND);
        arrow.getStroke().setEndArrowLength(ArrowLength.LONG);
        arrow.getStroke().setEndArrowWidth(ArrowWidth.WIDE);
        arrow.getStroke().setDashStyle(DashStyle.DASH);
        arrow.getStroke().setOpacity(0.5);
        
        Assert.assertEquals(arrow.getStroke().getJoinStyle(), JoinStyle.MITER);
        
        builder.insertNode(arrow);
        
        // Draw a thick black diagonal line with rounded ends
        Shape line = new Shape(doc, ShapeType.LINE);
        line.setTop(40.0);
        line.setWidth(200.0);
        line.setHeight(20.0);
        line.setStrokeWeight(5.0);
        line.getStroke().setEndCap(EndCap.ROUND);
        
        builder.insertNode(line);
        
        // Draw an arrow with a green fill
        Shape filledInArrow = new Shape(doc, ShapeType.ARROW);
        filledInArrow.setWidth(200.0);
        filledInArrow.setHeight(40.0);
        filledInArrow.setTop(100.0);
        filledInArrow.getFill().setColor(Color.GREEN);
        filledInArrow.getFill().setOn(true);
        
        builder.insertNode(filledInArrow);
        
        // Draw an arrow filled in with the Aspose logo and flip its orientation
        Shape filledInArrowImg = new Shape(doc, ShapeType.ARROW);
        filledInArrowImg.setWidth(200.0);
        filledInArrowImg.setHeight(40.0);
        filledInArrowImg.setTop(160.0);
        filledInArrowImg.setFlipOrientation(FlipOrientation.BOTH);
        
        BufferedImage image = ImageIO.read(getAsposelogoUri().toURL().openStream());
        Graphics2D graphics2D = image.createGraphics();
        
        // When we flipped the orientation of our arrow, the image content was flipped too
        // If we want it to be displayed the right side up, we have to reverse the arrow flip on the image
        AffineTransform at = new AffineTransform();
        at.concatenate(AffineTransform.getScaleInstance(1, -1));
        at.concatenate(AffineTransform.getTranslateInstance(0, -image.getHeight()));
        graphics2D.transform(at);
        graphics2D.drawImage(image, 0, 0, null);
        graphics2D.dispose();
        
        filledInArrowImg.getImageData().setImage(image);
        builder.insertNode(filledInArrowImg);
        
        filledInArrowImg.getStroke().setJoinStyle(JoinStyle.ROUND);
        
        doc.save(getArtifactsDir() + "Drawing.VariousShapes.docx");
      • getEndArrowWidth/setEndArrowWidth

        public int getEndArrowWidth() / public void setEndArrowWidth(int value)
        
        Defines the arrowhead width for the end of a stroke. The value of the property is ArrowWidth integer constant.

        The default value is ArrowWidth.MEDIUM.

        Example:

        Shows to create a variety of shapes.
        Document doc = new Document();
        DocumentBuilder builder = new DocumentBuilder(doc);
        
        // Draw a dotted horizontal half-transparent red line with an arrow on the left end and a diamond on the other
        Shape arrow = new Shape(doc, ShapeType.LINE);
        arrow.setWidth(200.0);
        arrow.getStroke().setColor(Color.RED);
        arrow.getStroke().setStartArrowType(ArrowType.ARROW);
        arrow.getStroke().setStartArrowLength(ArrowLength.LONG);
        arrow.getStroke().setStartArrowWidth(ArrowWidth.WIDE);
        arrow.getStroke().setEndArrowType(ArrowType.DIAMOND);
        arrow.getStroke().setEndArrowLength(ArrowLength.LONG);
        arrow.getStroke().setEndArrowWidth(ArrowWidth.WIDE);
        arrow.getStroke().setDashStyle(DashStyle.DASH);
        arrow.getStroke().setOpacity(0.5);
        
        Assert.assertEquals(arrow.getStroke().getJoinStyle(), JoinStyle.MITER);
        
        builder.insertNode(arrow);
        
        // Draw a thick black diagonal line with rounded ends
        Shape line = new Shape(doc, ShapeType.LINE);
        line.setTop(40.0);
        line.setWidth(200.0);
        line.setHeight(20.0);
        line.setStrokeWeight(5.0);
        line.getStroke().setEndCap(EndCap.ROUND);
        
        builder.insertNode(line);
        
        // Draw an arrow with a green fill
        Shape filledInArrow = new Shape(doc, ShapeType.ARROW);
        filledInArrow.setWidth(200.0);
        filledInArrow.setHeight(40.0);
        filledInArrow.setTop(100.0);
        filledInArrow.getFill().setColor(Color.GREEN);
        filledInArrow.getFill().setOn(true);
        
        builder.insertNode(filledInArrow);
        
        // Draw an arrow filled in with the Aspose logo and flip its orientation
        Shape filledInArrowImg = new Shape(doc, ShapeType.ARROW);
        filledInArrowImg.setWidth(200.0);
        filledInArrowImg.setHeight(40.0);
        filledInArrowImg.setTop(160.0);
        filledInArrowImg.setFlipOrientation(FlipOrientation.BOTH);
        
        BufferedImage image = ImageIO.read(getAsposelogoUri().toURL().openStream());
        Graphics2D graphics2D = image.createGraphics();
        
        // When we flipped the orientation of our arrow, the image content was flipped too
        // If we want it to be displayed the right side up, we have to reverse the arrow flip on the image
        AffineTransform at = new AffineTransform();
        at.concatenate(AffineTransform.getScaleInstance(1, -1));
        at.concatenate(AffineTransform.getTranslateInstance(0, -image.getHeight()));
        graphics2D.transform(at);
        graphics2D.drawImage(image, 0, 0, null);
        graphics2D.dispose();
        
        filledInArrowImg.getImageData().setImage(image);
        builder.insertNode(filledInArrowImg);
        
        filledInArrowImg.getStroke().setJoinStyle(JoinStyle.ROUND);
        
        doc.save(getArtifactsDir() + "Drawing.VariousShapes.docx");
      • getEndCap/setEndCap

        public int getEndCap() / public void setEndCap(int value)
        
        Defines the cap style for the end of a stroke. The value of the property is EndCap integer constant.

        The default value is EndCap.FLAT.

        Example:

        Shows to create a variety of shapes.
        Document doc = new Document();
        DocumentBuilder builder = new DocumentBuilder(doc);
        
        // Draw a dotted horizontal half-transparent red line with an arrow on the left end and a diamond on the other
        Shape arrow = new Shape(doc, ShapeType.LINE);
        arrow.setWidth(200.0);
        arrow.getStroke().setColor(Color.RED);
        arrow.getStroke().setStartArrowType(ArrowType.ARROW);
        arrow.getStroke().setStartArrowLength(ArrowLength.LONG);
        arrow.getStroke().setStartArrowWidth(ArrowWidth.WIDE);
        arrow.getStroke().setEndArrowType(ArrowType.DIAMOND);
        arrow.getStroke().setEndArrowLength(ArrowLength.LONG);
        arrow.getStroke().setEndArrowWidth(ArrowWidth.WIDE);
        arrow.getStroke().setDashStyle(DashStyle.DASH);
        arrow.getStroke().setOpacity(0.5);
        
        Assert.assertEquals(arrow.getStroke().getJoinStyle(), JoinStyle.MITER);
        
        builder.insertNode(arrow);
        
        // Draw a thick black diagonal line with rounded ends
        Shape line = new Shape(doc, ShapeType.LINE);
        line.setTop(40.0);
        line.setWidth(200.0);
        line.setHeight(20.0);
        line.setStrokeWeight(5.0);
        line.getStroke().setEndCap(EndCap.ROUND);
        
        builder.insertNode(line);
        
        // Draw an arrow with a green fill
        Shape filledInArrow = new Shape(doc, ShapeType.ARROW);
        filledInArrow.setWidth(200.0);
        filledInArrow.setHeight(40.0);
        filledInArrow.setTop(100.0);
        filledInArrow.getFill().setColor(Color.GREEN);
        filledInArrow.getFill().setOn(true);
        
        builder.insertNode(filledInArrow);
        
        // Draw an arrow filled in with the Aspose logo and flip its orientation
        Shape filledInArrowImg = new Shape(doc, ShapeType.ARROW);
        filledInArrowImg.setWidth(200.0);
        filledInArrowImg.setHeight(40.0);
        filledInArrowImg.setTop(160.0);
        filledInArrowImg.setFlipOrientation(FlipOrientation.BOTH);
        
        BufferedImage image = ImageIO.read(getAsposelogoUri().toURL().openStream());
        Graphics2D graphics2D = image.createGraphics();
        
        // When we flipped the orientation of our arrow, the image content was flipped too
        // If we want it to be displayed the right side up, we have to reverse the arrow flip on the image
        AffineTransform at = new AffineTransform();
        at.concatenate(AffineTransform.getScaleInstance(1, -1));
        at.concatenate(AffineTransform.getTranslateInstance(0, -image.getHeight()));
        graphics2D.transform(at);
        graphics2D.drawImage(image, 0, 0, null);
        graphics2D.dispose();
        
        filledInArrowImg.getImageData().setImage(image);
        builder.insertNode(filledInArrowImg);
        
        filledInArrowImg.getStroke().setJoinStyle(JoinStyle.ROUND);
        
        doc.save(getArtifactsDir() + "Drawing.VariousShapes.docx");
      • getImageBytes

        public byte[] getImageBytes()
        
        Defines the image for a stroke image or pattern fill.

        Example:

        Shows how to process shape stroke features from older versions of Microsoft Word.
        // Open a document which contains a rectangle with a thick, two-tone-patterned outline
        // These features cannot be recreated in new versions of Microsoft Word, so we will open an older .doc file
        Document doc = new Document(getMyDir() + "Shape.StrokePattern.doc");
        
        // Get the first shape's stroke
        Shape shape = (Shape) doc.getChild(NodeType.SHAPE, 0, true);
        Stroke s = shape.getStroke();
        
        // Every stroke will have a Color attribute, but only strokes from older Word versions have a Color2 attribute,
        // since the two-tone pattern line feature which requires the Color2 attribute is no longer supported
        Assert.assertEquals(s.getColor(), new Color((128), (0), (0), (255)));
        Assert.assertEquals(s.getColor2(), new Color((255), (255), (0), (255)));
        
        // This attribute contains the image data for the pattern, which we can save to our local file system
        Assert.assertNotNull(s.getImageBytes());
        ByteArrayInputStream imageInputStream = new ByteArrayInputStream(s.getImageBytes());
        BufferedImage bImage = ImageIO.read(imageInputStream);
        ImageIO.write(bImage, "png", new File(getArtifactsDir() + "Drawing.StrokePattern.png"));
      • getJoinStyle/setJoinStyle

        public int getJoinStyle() / public void setJoinStyle(int value)
        
        Defines the join style of a polyline. The value of the property is JoinStyle integer constant.

        The default value is JoinStyle.ROUND.

        Example:

        Shows how change stroke properties
        Document doc = new Document();
        DocumentBuilder builder = new DocumentBuilder(doc);
        
        // Create a new shape of type Rectangle
        Shape rectangle = new Shape(doc, ShapeType.RECTANGLE);
        
        //Change stroke properties
        Stroke stroke = rectangle.getStroke();
        stroke.setOn(true);
        stroke.setWeight(5.0);
        stroke.setColor(Color.RED);
        stroke.setDashStyle(DashStyle.SHORT_DASH_DOT_DOT);
        stroke.setJoinStyle(JoinStyle.MITER);
        stroke.setEndCap(EndCap.SQUARE);
        stroke.setLineStyle(ShapeLineStyle.TRIPLE);
        
        //Insert shape object
        builder.insertNode(rectangle);
      • getLineStyle/setLineStyle

        public int getLineStyle() / public void setLineStyle(int value)
        
        Defines the line style of the stroke. The value of the property is ShapeLineStyle integer constant.

        The default value is ShapeLineStyle.SINGLE.

        Example:

        Shows how change stroke properties
        Document doc = new Document();
        DocumentBuilder builder = new DocumentBuilder(doc);
        
        // Create a new shape of type Rectangle
        Shape rectangle = new Shape(doc, ShapeType.RECTANGLE);
        
        //Change stroke properties
        Stroke stroke = rectangle.getStroke();
        stroke.setOn(true);
        stroke.setWeight(5.0);
        stroke.setColor(Color.RED);
        stroke.setDashStyle(DashStyle.SHORT_DASH_DOT_DOT);
        stroke.setJoinStyle(JoinStyle.MITER);
        stroke.setEndCap(EndCap.SQUARE);
        stroke.setLineStyle(ShapeLineStyle.TRIPLE);
        
        //Insert shape object
        builder.insertNode(rectangle);
      • getOn/setOn

        public boolean getOn() / public void setOn(boolean value)
        
        Defines whether the path will be stroked.

        The default value is true.

        Example:

        Shows how change stroke properties
        Document doc = new Document();
        DocumentBuilder builder = new DocumentBuilder(doc);
        
        // Create a new shape of type Rectangle
        Shape rectangle = new Shape(doc, ShapeType.RECTANGLE);
        
        //Change stroke properties
        Stroke stroke = rectangle.getStroke();
        stroke.setOn(true);
        stroke.setWeight(5.0);
        stroke.setColor(Color.RED);
        stroke.setDashStyle(DashStyle.SHORT_DASH_DOT_DOT);
        stroke.setJoinStyle(JoinStyle.MITER);
        stroke.setEndCap(EndCap.SQUARE);
        stroke.setLineStyle(ShapeLineStyle.TRIPLE);
        
        //Insert shape object
        builder.insertNode(rectangle);
      • getOpacity/setOpacity

        public double getOpacity() / public void setOpacity(double value)
        
        Defines the amount of transparency of a stroke. Valid range is from 0 to 1.

        The default value is 1.

        Example:

        Shows to create a variety of shapes.
        Document doc = new Document();
        DocumentBuilder builder = new DocumentBuilder(doc);
        
        // Draw a dotted horizontal half-transparent red line with an arrow on the left end and a diamond on the other
        Shape arrow = new Shape(doc, ShapeType.LINE);
        arrow.setWidth(200.0);
        arrow.getStroke().setColor(Color.RED);
        arrow.getStroke().setStartArrowType(ArrowType.ARROW);
        arrow.getStroke().setStartArrowLength(ArrowLength.LONG);
        arrow.getStroke().setStartArrowWidth(ArrowWidth.WIDE);
        arrow.getStroke().setEndArrowType(ArrowType.DIAMOND);
        arrow.getStroke().setEndArrowLength(ArrowLength.LONG);
        arrow.getStroke().setEndArrowWidth(ArrowWidth.WIDE);
        arrow.getStroke().setDashStyle(DashStyle.DASH);
        arrow.getStroke().setOpacity(0.5);
        
        Assert.assertEquals(arrow.getStroke().getJoinStyle(), JoinStyle.MITER);
        
        builder.insertNode(arrow);
        
        // Draw a thick black diagonal line with rounded ends
        Shape line = new Shape(doc, ShapeType.LINE);
        line.setTop(40.0);
        line.setWidth(200.0);
        line.setHeight(20.0);
        line.setStrokeWeight(5.0);
        line.getStroke().setEndCap(EndCap.ROUND);
        
        builder.insertNode(line);
        
        // Draw an arrow with a green fill
        Shape filledInArrow = new Shape(doc, ShapeType.ARROW);
        filledInArrow.setWidth(200.0);
        filledInArrow.setHeight(40.0);
        filledInArrow.setTop(100.0);
        filledInArrow.getFill().setColor(Color.GREEN);
        filledInArrow.getFill().setOn(true);
        
        builder.insertNode(filledInArrow);
        
        // Draw an arrow filled in with the Aspose logo and flip its orientation
        Shape filledInArrowImg = new Shape(doc, ShapeType.ARROW);
        filledInArrowImg.setWidth(200.0);
        filledInArrowImg.setHeight(40.0);
        filledInArrowImg.setTop(160.0);
        filledInArrowImg.setFlipOrientation(FlipOrientation.BOTH);
        
        BufferedImage image = ImageIO.read(getAsposelogoUri().toURL().openStream());
        Graphics2D graphics2D = image.createGraphics();
        
        // When we flipped the orientation of our arrow, the image content was flipped too
        // If we want it to be displayed the right side up, we have to reverse the arrow flip on the image
        AffineTransform at = new AffineTransform();
        at.concatenate(AffineTransform.getScaleInstance(1, -1));
        at.concatenate(AffineTransform.getTranslateInstance(0, -image.getHeight()));
        graphics2D.transform(at);
        graphics2D.drawImage(image, 0, 0, null);
        graphics2D.dispose();
        
        filledInArrowImg.getImageData().setImage(image);
        builder.insertNode(filledInArrowImg);
        
        filledInArrowImg.getStroke().setJoinStyle(JoinStyle.ROUND);
        
        doc.save(getArtifactsDir() + "Drawing.VariousShapes.docx");
      • getStartArrowLength/setStartArrowLength

        public int getStartArrowLength() / public void setStartArrowLength(int value)
        
        Defines the arrowhead length for the start of a stroke. The value of the property is ArrowLength integer constant.

        The default value is ArrowLength.MEDIUM.

        Example:

        Shows to create a variety of shapes.
        Document doc = new Document();
        DocumentBuilder builder = new DocumentBuilder(doc);
        
        // Draw a dotted horizontal half-transparent red line with an arrow on the left end and a diamond on the other
        Shape arrow = new Shape(doc, ShapeType.LINE);
        arrow.setWidth(200.0);
        arrow.getStroke().setColor(Color.RED);
        arrow.getStroke().setStartArrowType(ArrowType.ARROW);
        arrow.getStroke().setStartArrowLength(ArrowLength.LONG);
        arrow.getStroke().setStartArrowWidth(ArrowWidth.WIDE);
        arrow.getStroke().setEndArrowType(ArrowType.DIAMOND);
        arrow.getStroke().setEndArrowLength(ArrowLength.LONG);
        arrow.getStroke().setEndArrowWidth(ArrowWidth.WIDE);
        arrow.getStroke().setDashStyle(DashStyle.DASH);
        arrow.getStroke().setOpacity(0.5);
        
        Assert.assertEquals(arrow.getStroke().getJoinStyle(), JoinStyle.MITER);
        
        builder.insertNode(arrow);
        
        // Draw a thick black diagonal line with rounded ends
        Shape line = new Shape(doc, ShapeType.LINE);
        line.setTop(40.0);
        line.setWidth(200.0);
        line.setHeight(20.0);
        line.setStrokeWeight(5.0);
        line.getStroke().setEndCap(EndCap.ROUND);
        
        builder.insertNode(line);
        
        // Draw an arrow with a green fill
        Shape filledInArrow = new Shape(doc, ShapeType.ARROW);
        filledInArrow.setWidth(200.0);
        filledInArrow.setHeight(40.0);
        filledInArrow.setTop(100.0);
        filledInArrow.getFill().setColor(Color.GREEN);
        filledInArrow.getFill().setOn(true);
        
        builder.insertNode(filledInArrow);
        
        // Draw an arrow filled in with the Aspose logo and flip its orientation
        Shape filledInArrowImg = new Shape(doc, ShapeType.ARROW);
        filledInArrowImg.setWidth(200.0);
        filledInArrowImg.setHeight(40.0);
        filledInArrowImg.setTop(160.0);
        filledInArrowImg.setFlipOrientation(FlipOrientation.BOTH);
        
        BufferedImage image = ImageIO.read(getAsposelogoUri().toURL().openStream());
        Graphics2D graphics2D = image.createGraphics();
        
        // When we flipped the orientation of our arrow, the image content was flipped too
        // If we want it to be displayed the right side up, we have to reverse the arrow flip on the image
        AffineTransform at = new AffineTransform();
        at.concatenate(AffineTransform.getScaleInstance(1, -1));
        at.concatenate(AffineTransform.getTranslateInstance(0, -image.getHeight()));
        graphics2D.transform(at);
        graphics2D.drawImage(image, 0, 0, null);
        graphics2D.dispose();
        
        filledInArrowImg.getImageData().setImage(image);
        builder.insertNode(filledInArrowImg);
        
        filledInArrowImg.getStroke().setJoinStyle(JoinStyle.ROUND);
        
        doc.save(getArtifactsDir() + "Drawing.VariousShapes.docx");
      • getStartArrowType/setStartArrowType

        public int getStartArrowType() / public void setStartArrowType(int value)
        
        Defines the arrowhead for the start of a stroke. The value of the property is ArrowType integer constant.

        The default value is ArrowType.NONE.

        Example:

        Shows to create a variety of shapes.
        Document doc = new Document();
        DocumentBuilder builder = new DocumentBuilder(doc);
        
        // Draw a dotted horizontal half-transparent red line with an arrow on the left end and a diamond on the other
        Shape arrow = new Shape(doc, ShapeType.LINE);
        arrow.setWidth(200.0);
        arrow.getStroke().setColor(Color.RED);
        arrow.getStroke().setStartArrowType(ArrowType.ARROW);
        arrow.getStroke().setStartArrowLength(ArrowLength.LONG);
        arrow.getStroke().setStartArrowWidth(ArrowWidth.WIDE);
        arrow.getStroke().setEndArrowType(ArrowType.DIAMOND);
        arrow.getStroke().setEndArrowLength(ArrowLength.LONG);
        arrow.getStroke().setEndArrowWidth(ArrowWidth.WIDE);
        arrow.getStroke().setDashStyle(DashStyle.DASH);
        arrow.getStroke().setOpacity(0.5);
        
        Assert.assertEquals(arrow.getStroke().getJoinStyle(), JoinStyle.MITER);
        
        builder.insertNode(arrow);
        
        // Draw a thick black diagonal line with rounded ends
        Shape line = new Shape(doc, ShapeType.LINE);
        line.setTop(40.0);
        line.setWidth(200.0);
        line.setHeight(20.0);
        line.setStrokeWeight(5.0);
        line.getStroke().setEndCap(EndCap.ROUND);
        
        builder.insertNode(line);
        
        // Draw an arrow with a green fill
        Shape filledInArrow = new Shape(doc, ShapeType.ARROW);
        filledInArrow.setWidth(200.0);
        filledInArrow.setHeight(40.0);
        filledInArrow.setTop(100.0);
        filledInArrow.getFill().setColor(Color.GREEN);
        filledInArrow.getFill().setOn(true);
        
        builder.insertNode(filledInArrow);
        
        // Draw an arrow filled in with the Aspose logo and flip its orientation
        Shape filledInArrowImg = new Shape(doc, ShapeType.ARROW);
        filledInArrowImg.setWidth(200.0);
        filledInArrowImg.setHeight(40.0);
        filledInArrowImg.setTop(160.0);
        filledInArrowImg.setFlipOrientation(FlipOrientation.BOTH);
        
        BufferedImage image = ImageIO.read(getAsposelogoUri().toURL().openStream());
        Graphics2D graphics2D = image.createGraphics();
        
        // When we flipped the orientation of our arrow, the image content was flipped too
        // If we want it to be displayed the right side up, we have to reverse the arrow flip on the image
        AffineTransform at = new AffineTransform();
        at.concatenate(AffineTransform.getScaleInstance(1, -1));
        at.concatenate(AffineTransform.getTranslateInstance(0, -image.getHeight()));
        graphics2D.transform(at);
        graphics2D.drawImage(image, 0, 0, null);
        graphics2D.dispose();
        
        filledInArrowImg.getImageData().setImage(image);
        builder.insertNode(filledInArrowImg);
        
        filledInArrowImg.getStroke().setJoinStyle(JoinStyle.ROUND);
        
        doc.save(getArtifactsDir() + "Drawing.VariousShapes.docx");
      • getStartArrowWidth/setStartArrowWidth

        public int getStartArrowWidth() / public void setStartArrowWidth(int value)
        
        Defines the arrowhead width for the start of a stroke. The value of the property is ArrowWidth integer constant.

        The default value is ArrowWidth.MEDIUM.

        Example:

        Shows to create a variety of shapes.
        Document doc = new Document();
        DocumentBuilder builder = new DocumentBuilder(doc);
        
        // Draw a dotted horizontal half-transparent red line with an arrow on the left end and a diamond on the other
        Shape arrow = new Shape(doc, ShapeType.LINE);
        arrow.setWidth(200.0);
        arrow.getStroke().setColor(Color.RED);
        arrow.getStroke().setStartArrowType(ArrowType.ARROW);
        arrow.getStroke().setStartArrowLength(ArrowLength.LONG);
        arrow.getStroke().setStartArrowWidth(ArrowWidth.WIDE);
        arrow.getStroke().setEndArrowType(ArrowType.DIAMOND);
        arrow.getStroke().setEndArrowLength(ArrowLength.LONG);
        arrow.getStroke().setEndArrowWidth(ArrowWidth.WIDE);
        arrow.getStroke().setDashStyle(DashStyle.DASH);
        arrow.getStroke().setOpacity(0.5);
        
        Assert.assertEquals(arrow.getStroke().getJoinStyle(), JoinStyle.MITER);
        
        builder.insertNode(arrow);
        
        // Draw a thick black diagonal line with rounded ends
        Shape line = new Shape(doc, ShapeType.LINE);
        line.setTop(40.0);
        line.setWidth(200.0);
        line.setHeight(20.0);
        line.setStrokeWeight(5.0);
        line.getStroke().setEndCap(EndCap.ROUND);
        
        builder.insertNode(line);
        
        // Draw an arrow with a green fill
        Shape filledInArrow = new Shape(doc, ShapeType.ARROW);
        filledInArrow.setWidth(200.0);
        filledInArrow.setHeight(40.0);
        filledInArrow.setTop(100.0);
        filledInArrow.getFill().setColor(Color.GREEN);
        filledInArrow.getFill().setOn(true);
        
        builder.insertNode(filledInArrow);
        
        // Draw an arrow filled in with the Aspose logo and flip its orientation
        Shape filledInArrowImg = new Shape(doc, ShapeType.ARROW);
        filledInArrowImg.setWidth(200.0);
        filledInArrowImg.setHeight(40.0);
        filledInArrowImg.setTop(160.0);
        filledInArrowImg.setFlipOrientation(FlipOrientation.BOTH);
        
        BufferedImage image = ImageIO.read(getAsposelogoUri().toURL().openStream());
        Graphics2D graphics2D = image.createGraphics();
        
        // When we flipped the orientation of our arrow, the image content was flipped too
        // If we want it to be displayed the right side up, we have to reverse the arrow flip on the image
        AffineTransform at = new AffineTransform();
        at.concatenate(AffineTransform.getScaleInstance(1, -1));
        at.concatenate(AffineTransform.getTranslateInstance(0, -image.getHeight()));
        graphics2D.transform(at);
        graphics2D.drawImage(image, 0, 0, null);
        graphics2D.dispose();
        
        filledInArrowImg.getImageData().setImage(image);
        builder.insertNode(filledInArrowImg);
        
        filledInArrowImg.getStroke().setJoinStyle(JoinStyle.ROUND);
        
        doc.save(getArtifactsDir() + "Drawing.VariousShapes.docx");
      • getWeight/setWeight

        public double getWeight() / public void setWeight(double value)
        
        Defines the brush thickness that strokes the path of a shape in points.

        The default value is 0.75.

        Example:

        Shows how change stroke properties
        Document doc = new Document();
        DocumentBuilder builder = new DocumentBuilder(doc);
        
        // Create a new shape of type Rectangle
        Shape rectangle = new Shape(doc, ShapeType.RECTANGLE);
        
        //Change stroke properties
        Stroke stroke = rectangle.getStroke();
        stroke.setOn(true);
        stroke.setWeight(5.0);
        stroke.setColor(Color.RED);
        stroke.setDashStyle(DashStyle.SHORT_DASH_DOT_DOT);
        stroke.setJoinStyle(JoinStyle.MITER);
        stroke.setEndCap(EndCap.SQUARE);
        stroke.setLineStyle(ShapeLineStyle.TRIPLE);
        
        //Insert shape object
        builder.insertNode(rectangle);