ShapeBase elements: Pictures and Shapes

ShapeBase elements in the SautinSoft.Document library represent the base class for all drawing objects, such as shapes (Shape), shape groups (ShapeGroup), or images (Picture). These elements allow users to insert and manipulate graphic objects in DOCX, PDF, RTF, and other supported formats.

Advantages of Using ShapeBase:
  • Versatility: ShapeBase provides a common interface for working with various graphic objects.
  • Flexibility: It is easy to modify the properties of shapes and images, adapting them to specific tasks.
  • Ease of Integration: Inserting and manipulating graphic objects is done using understandable and concise code.
    1. Add SautinSoft.Document from Nuget.
    2. Create a new document.
    3. Add a shape with text.
    4. Add a picture.

    In this code example, we create a new document with a shape that contains text and an image.

    Pictures and Shapes

    Complete code

    using SautinSoft.Document;
    using SautinSoft.Document.Drawing;
    
    namespace Example
    {
        class Program
        {
            static void Main(string[] args)
            {
                // Get your free trial key here:   
                // https://sautinsoft.com/start-for-free/
    
                PictureAndShape();
            }
            /// <summary>
            /// Creates a new document with shape containing a text and picture.
            /// </summary>
            /// <remarks>
            /// Details: https://sautinsoft.com/products/document/help/net/developer-guide/pictures-and-shapes.php
            /// </remarks>
            static void PictureAndShape()
            {
                string filePath = @"Shape.docx";
                string imagePath = @"..\..\..\image.jpg";
    
                DocumentCore dc = new DocumentCore();                        
                
                // 1. Shape with text.
                Shape shapeWithText = new Shape(dc, Layout.Floating(new HorizontalPosition(1, LengthUnit.Inch, HorizontalPositionAnchor.Page), 
                    new VerticalPosition(2, LengthUnit.Inch, VerticalPositionAnchor.Page),
                    new Size(LengthUnitConverter.Convert(6, LengthUnit.Inch, LengthUnit.Point), LengthUnitConverter.Convert(1.5d, LengthUnit.Centimeter, LengthUnit.Point))));
                (shapeWithText.Layout as FloatingLayout).WrappingStyle = WrappingStyle.InFrontOfText;
                shapeWithText.Text.Blocks.Add(new Paragraph(dc, new Run(dc, "This is the text in shape.", new CharacterFormat() { Size  = 30})));
                shapeWithText.Outline.Fill.SetEmpty();
                shapeWithText.Fill.SetSolid(Color.Orange);
                dc.Content.End.Insert(shapeWithText.Content);            
    
                // 2. Picture with FloatingLayout:
                // Floating layout means that the Picture (or Shape) is positioned by coordinates.
                Picture pic = new Picture(dc, imagePath);
                pic.Layout = FloatingLayout.Floating(
                    new HorizontalPosition(50, LengthUnit.Millimeter, HorizontalPositionAnchor.Page),
                    new VerticalPosition(20, LengthUnit.Millimeter, VerticalPositionAnchor.TopMargin),
                    new Size(LengthUnitConverter.Convert(10, LengthUnit.Centimeter, LengthUnit.Point),
                             LengthUnitConverter.Convert(10, LengthUnit.Centimeter, LengthUnit.Point))
                             );
    
                // Set the wrapping style.
                (pic.Layout as FloatingLayout).WrappingStyle = WrappingStyle.BehindText;
    
                // Add our picture into the section.
                dc.Content.End.Insert(pic.Content);
    
                dc.Save(filePath);
    
                // Show the result.
                System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo(filePath) { UseShellExecute = true });
            }
        }
    }

    Download

    Imports System
    Imports System.IO
    Imports SautinSoft.Document
    Imports SautinSoft.Document.Drawing
    
    Module Sample
        Sub Main()
            PictureAndShape()
        End Sub
        ''' Get your free trial key here:   
        ''' https://sautinsoft.com/start-for-free/
        ''' <summary>
        ''' Creates a new document with shape containing a text and picture.
        ''' </summary>
        ''' <remarks>
        ''' Details: https://sautinsoft.com/products/document/help/net/developer-guide/pictures-and-shapes.php
        ''' </remarks>
        Sub PictureAndShape()
            Dim filePath As String = "Shape.docx"
            Dim imagePath As String = "..\..\..\image.jpg"
    
            Dim dc As New DocumentCore()
    
            ' 1. Shape with text.
            Dim shapeWithText As New Shape(dc, Layout.Floating(New HorizontalPosition(1, LengthUnit.Inch, HorizontalPositionAnchor.Page), New VerticalPosition(2, LengthUnit.Inch, VerticalPositionAnchor.Page), New Size(LengthUnitConverter.Convert(6, LengthUnit.Inch, LengthUnit.Point), LengthUnitConverter.Convert(1.5R, LengthUnit.Centimeter, LengthUnit.Point))))
            TryCast(shapeWithText.Layout, FloatingLayout).WrappingStyle = WrappingStyle.InFrontOfText
            shapeWithText.Text.Blocks.Add(New Paragraph(dc, New Run(dc, "This is the text in shape.", New CharacterFormat() With {.Size = 30})))
            shapeWithText.Outline.Fill.SetEmpty()
            shapeWithText.Fill.SetSolid(Color.Orange)
            dc.Content.End.Insert(shapeWithText.Content)
    
            ' 2. Picture with FloatingLayout:
            ' Floating layout means that the Picture (or Shape) is positioned by coordinates.
            Dim pic As New Picture(dc, imagePath)
            pic.Layout = FloatingLayout.Floating(New HorizontalPosition(50, LengthUnit.Millimeter, HorizontalPositionAnchor.Page), New VerticalPosition(20, LengthUnit.Millimeter, VerticalPositionAnchor.TopMargin), New Size(LengthUnitConverter.Convert(10, LengthUnit.Centimeter, LengthUnit.Point), LengthUnitConverter.Convert(10, LengthUnit.Centimeter, LengthUnit.Point)))
    
            ' Set the wrapping style.
            TryCast(pic.Layout, FloatingLayout).WrappingStyle = WrappingStyle.BehindText
    
            ' Add our picture into the section.
            dc.Content.End.Insert(pic.Content)
    
            dc.Save(filePath)
    
            ' Show the result.
            System.Diagnostics.Process.Start(New System.Diagnostics.ProcessStartInfo(filePath) With {.UseShellExecute = True})
        End Sub
    End Module

    Download


    If you need a new code example or have a question: email us at support@sautinsoft.com or ask at Online Chat (right-bottom corner of this page) or use the Form below:


    Captcha

    Questions and suggestions from you are always welcome!

    We are developing .Net components since 2002. We know PDF, DOCX, RTF, HTML, XLSX and Images formats. If you need any assistance with creating, modifying or converting documents in various formats, we can help you. We will write any code example for you absolutely free.