# Text Frames and Shapes

> Insert, position and fill text frames with ServerTextControl, read or remove drawings and render shapes as SVG with TXDrawingCore, Shape and ShapeCollection.

- **Product:** TX Text Control .NET Server
- **Section:** Documentation
- **Kind:** Topic
- **Path:** TX Text Control .NET Server > Document Processing > Text Frames and Shapes
- **6466 words**
- **Web URL:** https://docs.textcontrol.com/tx-text-control-dotnet-server/document-processing/text-frames-shapes/
- **LLMs URL:** https://docs.textcontrol.com/tx-text-control-dotnet-server/document-processing/text-frames-shapes/llms.txt
- **LLMs-Full URL:** https://docs.textcontrol.com/tx-text-control-dotnet-server/document-processing/text-frames-shapes/llms-full.txt

---

An address block at a fixed place on a letter, a highlighted note beside a paragraph or a sidebar with a small table are text frames: rectangles with text of their own, placed anywhere on a page. Drawings add shapes such as lines, arrows and callouts. With `ServerTextControl`, you insert and format text frames, fill them with text, tables and images, find them in templates by name and read, move and remove the text frames and drawings of documents you load.

Frames are placed like images, so the placements and insertion modes described in [Images](https://docs.textcontrol.com/tx-text-control-dotnet-server/document-processing/images/#how-images-are-placed) apply here as well. Charts and barcodes, the other kinds of frames, are covered in [Charts and Barcodes](https://docs.textcontrol.com/tx-text-control-dotnet-server/document-processing/charts-barcodes/llms-full.txt), and drawing shapes in the browser in [Shapes](https://docs.textcontrol.com/tx-text-control-dotnet-server/document-editor/shapes/llms-full.txt) in the Document Editor section.

### How Text Frames Work

A [TextFrame](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/textframe/llms-full.txt) is a rectangle filled with text that is formatted like the main text. It's a text part of its own and implements [IFormattedText](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/iformattedtext/llms-full.txt), so it has paragraphs, a selection, tables, images, fields and even further text frames.

- **Collections.** [ServerTextControl.TextFrames](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/servertextcontrol/textframes-property/llms-full.txt) contains the text frames of the main text, but not the text frames nested in other text frames. Headers and footers have [HeaderFooter.TextFrames](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/headerfooter/textframes-property/llms-full.txt), and [TextFrame.Frames](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/textframe/frames-property/llms-full.txt) contains the images, text frames, charts, barcodes and drawings inside a text frame.
- **Base class.** Text frames, images, charts, barcodes and drawings derive from [FrameBase](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/framebase/llms-full.txt), which provides the name, ID, size, location, text distances and z-order.
- **Placement.** A text frame is inline, anchored to a paragraph or fixed on a page or in the document, depending on the [Add](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/textframecollection/add-method/llms-full.txt) overload. Every overload but the inline one takes a [TextFrameInsertionMode](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/textframeinsertionmode/enumeration/llms-full.txt) as its last parameter, which says how the text flows around the frame: `DisplaceText`, `DisplaceCompleteLines`, `AboveTheText` or `BelowTheText`.
- **Units.** Sizes, locations, borders and margins are in twips, 1/1440 inch.

### Insert a Text Frame

The following program writes two paragraphs and anchors a note with a background color and a double border to the right edge of the second paragraph:

```csharp
using System.Drawing;
using TXTextControl;

using (ServerTextControl tx = new ServerTextControl())
{
    tx.Create();

    tx.Text = "Invoice INV-2025-001\r\n" +
        "Thank you for your order. This paragraph flows around the note on the right.";

    // 3 x 1.5 inches in twips
    TextFrame note = new TextFrame(new Size(4320, 2160))
    {
        Name = "payment-note",
        BackColor = Color.LightYellow,
        BorderWidth = 20,
        BorderColor = Color.DarkBlue,
        BorderStyle = FrameStyle.Double,
        InternalMargins = new int[] { 144, 144, 144, 144 }
    };

    // Anchored to the paragraph at the input position, aligned right
    tx.TextFrames.Add(note, HorizontalAlignment.Right, -1, TextFrameInsertionMode.DisplaceText);

    // The text frame has a selection of its own
    note.Selection.Text = "Payment due within 14 days.";

    tx.Save("text-frame.pdf", StreamType.AdobePDF);
}
```

In *text-frame.pdf*, the note sits at the right edge of the second paragraph, and the text of the paragraph wraps to the left of it:

![The result of the program: a light yellow text frame with a dark blue double border and the text "Payment due within 14 days" to the right of the paragraph that flows around it.](https://docs.textcontrol.com/assets/img/tx-text-control-dotnet-server/text-frame-note.69a2b8b3.webp)

The code works as follows:

- The [TextFrame constructor](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/textframe/constructor/llms-full.txt) takes the size of the frame.
- [BackColor](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/textframe/backcolor-property/llms-full.txt) is the background color. [BorderWidth](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/textframe/borderwidth-property/llms-full.txt) is the width of the border line, where 0 means no border. [BorderColor](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/textframe/bordercolor-property/llms-full.txt) and [BorderStyle](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/textframe/borderstyle-property/llms-full.txt), `FrameStyle.Single` or `FrameStyle.Double`, set its color and style.
- [InternalMargins](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/textframe/internalmargins-property/llms-full.txt) are the distances between the border and the text, in the order left, top, right and bottom.
- `Add` with an alignment anchors the frame to the paragraph that contains the text position; `-1` is the input position. The alignment is `Left`, `Right` or `Center`.
- [TextFrame.Selection](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/textframe/selection-property/llms-full.txt) inserts text into the frame and formats it, as `ServerTextControl.Selection` does in the main text.

[Transparency](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/textframe/transparency-property/llms-full.txt) makes the frame see-through, from 0 for opaque to 255 for completely transparent. The other overloads of `Add` insert a frame inline with `Add(frame, textPosition)`, anchor it at a location relative to the paragraph or place it at a fixed position.

### Fill a Text Frame in a Template

Letters with window envelopes need the address at the same place on the first page, whatever the text above it. A text frame fixed on the page holds the address, and its name lets your code find it again. The following program creates such a template and then fills the frame of the saved template:

```csharp
using System.Drawing;
using TXTextControl;

using (ServerTextControl tx = new ServerTextControl())
{
    tx.Create();
    tx.Text = "Dear customer,\r\nplease find your invoice attached.";

    TextFrame address = new TextFrame(new Size(5040, 1440))
    {
        Name = "recipient",
        BorderWidth = 0
    };

    // Page 1, 1 inch from the left and 2 inches from the top edge of the page
    tx.TextFrames.Add(address, 1, new Point(1440, 2880), TextFrameInsertionMode.DisplaceCompleteLines);

    tx.Save("letter-template.docx", StreamType.WordprocessingML);
}

using (ServerTextControl tx = new ServerTextControl())
{
    tx.Create();
    tx.Load("letter-template.docx", StreamType.WordprocessingML);

    // null if no text frame has this name
    TextFrame recipient = tx.TextFrames.GetItem("recipient");

    if (recipient != null)
    {
        recipient.Selection.Text = "Acme Corporation\r\n123 Business Lane, Suite 456\r\nMetropolis, USA";
    }

    tx.Save("letter.pdf", StreamType.AdobePDF);
}
```

The code works as follows:

- `Add(frame, page, location, insertionMode)` places the frame on a page, numbered from 1, at a location relative to the top-left corner of the page. `Add(frame, location, insertionMode)` places it relative to the top-left corner of the whole document.
- `DisplaceCompleteLines` keeps the text above and below the frame, so the text never runs beside the address.
- [FrameBase.Name](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/framebase/name-property/llms-full.txt) is kept when the document is saved as DOCX, DOC or RTF. [TextFrameCollection.GetItem](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/textframecollection/getitem-method/llms-full.txt) finds a frame by its name or its [ID](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/framebase/id-property/llms-full.txt) and returns `null` if there is none.

A text frame has the same collections as the main text: [TextFrame.Tables](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/textframe/tables-property/llms-full.txt) adds a table to the frame, and [TextFrame.Images](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/textframe/images-property/llms-full.txt) an image, for example `recipient.Tables.Add(2, 2, 10)`. To replace placeholder text in all frames at once, loop through `TextParts`, as [Replace Text in Headers, Footers and Text Frames](https://docs.textcontrol.com/tx-text-control-dotnet-server/document-processing/text/#replace-text-in-headers-footers-and-text-frames) shows.

### Read and Remove the Text Frames of a Document

The following program lists the text frames of a loaded document with their text and removes the frame named "draft-note":

```csharp
using TXTextControl;

using (ServerTextControl tx = new ServerTextControl())
{
    tx.Create();

    // Occurs for each text frame of the loaded document
    tx.TextFrameCreated += (sender, e) => Console.WriteLine($"Loaded text frame '{e.TextFrame.Name}'");

    tx.Load("Documents/sample.docx", StreamType.WordprocessingML);

    foreach (TextFrame frame in tx.TextFrames)
    {
        Console.WriteLine($"'{frame.Name}' (ID {frame.ID}): {frame.Size.Width} x {frame.Size.Height} twips, " +
                          $"text position {frame.TextPosition}, {frame.Frames.Count} objects inside");

        foreach (Paragraph paragraph in frame.Paragraphs)
        {
            Console.WriteLine("  " + paragraph.Text);
        }
    }

    TextFrame draft = tx.TextFrames.GetItem("draft-note");

    if (draft != null)
    {
        tx.TextFrames.Remove(draft);
    }

    tx.Save("sample-frames.docx", StreamType.WordprocessingML);
}
```

The code works as follows:

- [TextFrameCreated](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/servertextcontrol/textframecreated-event/llms-full.txt) occurs for each text frame of a loaded document, but not for frames added with `Add`. [TextFrameDeleted](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/servertextcontrol/textframedeleted-event/llms-full.txt) occurs when a frame is removed.
- [FrameBase.Size](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/framebase/size-property/llms-full.txt) returns the size of the frame and, unlike for images, also changes it. [TextPosition](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/framebase/textposition-property/llms-full.txt) is the one-based position of the frame in the text.
- [TextFrame.Paragraphs](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/textframe/paragraphs-property/llms-full.txt) contains the paragraphs inside the frame.
- [TextFrameCollection.Remove](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/textframecollection/remove-method/llms-full.txt) removes a frame and returns `true` if it was removed.

[FrameBase.Location](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/framebase/location-property/llms-full.txt) moves a frame that isn't inline: for an anchored frame, relative to its paragraph, otherwise relative to the document. [FrameBase.Bounds](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/framebase/bounds-property/llms-full.txt) returns its rectangle relative to the top-left corner of the document. When a PDF is loaded with the default import settings, its layout is rebuilt with text frames, tables and images, as [Loading Documents](https://docs.textcontrol.com/tx-text-control-dotnet-server/document-processing/loading/llms-full.txt) describes.

### Drawings and Shapes

A drawing is a single shape, such as a line, a rectangle, an arrow, a star or a callout, or a canvas with several shapes. The shapes follow the preset shapes of Office Open XML, and [ShapeType](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-drawing/shapetype/enumeration/llms-full.txt) lists them. A [DrawingFrame](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-datavisualization/drawingframe/llms-full.txt) places a drawing in a document like a text frame, and [ServerTextControl.Drawings](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/servertextcontrol/drawings-property/llms-full.txt) returns the [DrawingCollection](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-datavisualization/drawingcollection/llms-full.txt) of the main text. Drawings are saved and loaded with DOCX and the TX Text Control format; other formats save an image of the drawing.

The following program lists the drawings of a loaded document and removes the drawing named "fold-marks":

```csharp
using TXTextControl;
using TXTextControl.DataVisualization;

using (ServerTextControl tx = new ServerTextControl())
{
    tx.Create();

    // Occurs for each drawing of the loaded document
    tx.DrawingCreated += (sender, e) => Console.WriteLine($"Loaded drawing '{e.DrawingFrame.Name}'");

    tx.Load("Documents/sample.docx", StreamType.WordprocessingML);

    foreach (DrawingFrame frame in tx.Drawings)
    {
        Console.WriteLine($"'{frame.Name}': {frame.Size.Width} x {frame.Size.Height} twips at {frame.Bounds.Location}");
    }

    // null if no drawing has this name
    DrawingFrame marks = tx.Drawings.GetItem("fold-marks");

    if (marks != null)
    {
        tx.Drawings.Remove(marks);
    }

    tx.Save("sample-drawings.docx", StreamType.WordprocessingML);
}
```

The code works as follows:

- [DrawingCreated](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/servertextcontrol/drawingcreated-event/llms-full.txt) occurs for each drawing of a loaded document, but not for drawings added with `Add`, and [DrawingDeleted](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/servertextcontrol/drawingdeleted-event/llms-full.txt) when a drawing is removed.
- [DrawingCollection.GetItem](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-datavisualization/drawingcollection/getitem-method/llms-full.txt) returns a drawing by its name or ID, or `null`, and [Remove](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-datavisualization/drawingcollection/remove-method/llms-full.txt) removes it.
- [DrawingCollection.Add](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-datavisualization/drawingcollection/add-method/llms-full.txt) has the same placements as `TextFrameCollection.Add`, with a [FrameInsertionMode](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/frameinsertionmode/enumeration/llms-full.txt) as the last parameter.

Headers, footers and text frames have their own `Drawings` collections, such as [HeaderFooter.Drawings](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol/headerfooter/drawings-property/llms-full.txt). The blog article [Adding Fold Marks and Punch Marks to Documents using Drawings in C#](https://www.textcontrol.com/blog/2024/07/19/adding-fold-marks-and-punch-marks-to-documents-using-drawings-in-csharp/) inserts line shapes behind the text of a header, with code for Windows Forms. The page it creates has two black fold marks, 87 mm and 192 mm from the top of the page, and a longer red punch mark, the center for the punch holes, at 148.5 mm, all in the left margin:

![A page of text with three short horizontal lines in its left margin: two black fold marks and, between them, a longer red punch mark.](https://docs.textcontrol.com/assets/img/tx-text-control-dotnet-server/fold-marks-drawings.b4353b4f.webp)

The drawing frame in that article wraps the `TXDrawingControl` of Windows Forms: the [DrawingFrame constructor](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-datavisualization/drawingframe/constructor/llms-full.txt) accepts the drawing controls of Windows Forms and WPF only. To draw shapes without them, render them with `TXDrawingCore` as shown next.

#### Render Shapes With TXDrawingCore

[TXDrawingCore](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-drawing/txdrawingcore/llms-full.txt), introduced in version 33.0, is a canvas of shapes without a user interface. It holds [Shape](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-drawing/shape/llms-full.txt) objects in a [ShapeCollection](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-drawing/shapecollection/llms-full.txt) and renders them as SVG. The following program draws a rounded rectangle with a blue fill and a dark outline, saves the SVG and inserts it into a document as an image:

```csharp
using System.Drawing;
using TXTextControl;
using TXTextControl.Drawing;

// A canvas of 2 x 1 inches, in twips
TXDrawingCore drawing = new TXDrawingCore(2880, 1440);

Shape box = new Shape(ShapeType.RoundRectangle)
{
    Location = new Point(144, 144),
    Size = new Size(2592, 1152)
};

box.ShapeFill.Color = Color.LightSteelBlue;
box.ShapeOutline.Color = Color.DarkBlue;
box.ShapeOutline.Width = 40; // twips

drawing.Shapes.Add(box);

// The shapes as SVG, without selection handles
string svg = drawing.GetSVG(drawing.Size, false);
File.WriteAllText("shape.svg", svg);

using (ServerTextControl tx = new ServerTextControl())
{
    tx.Create();

    tx.Selection.Text = "Status: ";

    // 8 is the import filter for SVG
    tx.Images.Add(new TXTextControl.Image("shape.svg", 8), -1);

    tx.Save("shape.pdf", StreamType.AdobePDF);
}
```

The code works as follows:

- The [TXDrawingCore constructor](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-drawing/txdrawingcore/constructor/llms-full.txt) takes the width and height of the canvas in twips. Without parameters, the canvas is 1134 x 1134 twips.
- The [Shape constructor](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-drawing/shape/constructor/llms-full.txt) takes a [ShapeType](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-drawing/shapetype/enumeration/llms-full.txt). [Location](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-drawing/shape/location-property/llms-full.txt) and [Size](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-drawing/shape/size-property/llms-full.txt) are in twips from the top-left corner of the canvas.
- [ShapeFill](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-drawing/shape/shapefill-property/llms-full.txt) returns the [Fill](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-drawing/shape-fill/llms-full.txt) of the shape, whose [Color](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-drawing/shape-fill/color-property/llms-full.txt) is the fill color. [ShapeOutline](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-drawing/shape/shapeoutline-property/llms-full.txt) returns the [Outline](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-drawing/shape-outline/llms-full.txt) with the line [Color](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-drawing/shape-outline/color-property/llms-full.txt), black by default, and [Width](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-drawing/shape-outline/width-property/llms-full.txt) in twips, 20 by default.
- [ShapeCollection.Add](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-drawing/shapecollection/add-method/llms-full.txt) adds the shape at its location and size. With [ShapeCollection.AddStyle](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-drawing/shapecollection-addstyle/enumeration/llms-full.txt)`.Fill` as second parameter, the shape fills the whole canvas instead.
- [GetSVG](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-drawing/txdrawingcore/getsvg-method/llms-full.txt) returns the shapes as an SVG string. Its second parameter shows the handles of selected shapes. The size you pass becomes the new [Size](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-drawing/txdrawingcore/size-property/llms-full.txt) of the canvas.
- `TXTextControl.Image` is written with its namespace, because `System.Drawing` has an `Image` class too.

Other members of `TXDrawingCore`:

| Member | Purpose |
|---|---|
| [BackColor](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-drawing/txdrawingcore/backcolor-property/llms-full.txt), [BorderColor](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-drawing/txdrawingcore/bordercolor-property/llms-full.txt), [BorderWidth](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-drawing/txdrawingcore/borderwidth-property/llms-full.txt) | The background and the border of the canvas; transparent, black and 0 by default |
| [Save](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-drawing/txdrawingcore/save-method/llms-full.txt), [Load](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-drawing/txdrawingcore/load-method/llms-full.txt) | Save the shape data to a `Stream` and load it again |
| [SizeToContent](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-drawing/txdrawingcore/sizetocontent-method/llms-full.txt) | Adapts the canvas to the visible bounds of its shapes and returns the change of each side in twips |
| [Selection](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-drawing/txdrawingcore/selection-property/llms-full.txt), [SelectAll](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-drawing/txdrawingcore/selectall-method/llms-full.txt) | The selected shapes, as a [Drawing.Selection](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-drawing/selection/llms-full.txt) that brings them forward or sends them back |
| [Undo](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-drawing/txdrawingcore/undo-method/llms-full.txt), [Redo](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-drawing/txdrawingcore/redo-method/llms-full.txt), [ClearUndo](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-drawing/txdrawingcore/clearundo-method/llms-full.txt) | The undo buffer of the canvas |
| [Copy](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-drawing/txdrawingcore/copy-method/llms-full.txt), [Cut](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-drawing/txdrawingcore/cut-method/llms-full.txt), [Paste](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-drawing/txdrawingcore/paste-method/llms-full.txt) | Exchange selected shapes through the clipboard |
| [Changed](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-drawing/txdrawingcore/changed-event/llms-full.txt), [ShapeCreated](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-drawing/txdrawingcore/shapecreated-event/llms-full.txt), [AdaptBounds](https://docs.textcontrol.com/tx-text-control-dotnet-server/reference/txtextcontrol-drawing/txdrawingcore/adaptbounds-event/llms-full.txt) | Occur when the shapes or their formatting change, when a shape is added and when the shapes need a larger or smaller canvas |

### Next Steps

- [Charts and Barcodes](https://docs.textcontrol.com/tx-text-control-dotnet-server/document-processing/charts-barcodes/llms-full.txt): add barcodes and QR codes to documents.
- [Images](https://docs.textcontrol.com/tx-text-control-dotnet-server/document-processing/images/llms-full.txt): insert and position images.
- [Headers and Footers](https://docs.textcontrol.com/tx-text-control-dotnet-server/document-processing/headers-footers/llms-full.txt): place frames that appear on every page.
- [Shapes](https://docs.textcontrol.com/tx-text-control-dotnet-server/document-editor/shapes/llms-full.txt) in the Document Editor: let users insert text frames and shapes.

---

## Nearby

- **Previous:** [Images](https://docs.textcontrol.com/tx-text-control-dotnet-server/document-processing/images/llms-full.txt)
- **Next:** [Charts and Barcodes](https://docs.textcontrol.com/tx-text-control-dotnet-server/document-processing/charts-barcodes/llms-full.txt)
