# Inserting Background Images into TX Text Control

> Background images in TX Text Control are inserted behind text at fixed page positions using the BelowTheText insertion mode flag. The code iterates through all pages, calculates centered coordinates by comparing image dimensions to page size, and converts between twips and pixels.

- **Author:** Bjoern Meyer
- **Published:** 2014-03-17
- **Modified:** 2026-07-17
- **Description:** Background images in TX Text Control are inserted behind text at fixed page positions using the BelowTheText insertion mode flag. The code iterates through all pages, calculates centered coordinates by comparing image dimensions to page size, and converts between twips and pixels.
- **2 min read** (220 words)
- **Tags:**
  - Tutorial
- **Web URL:** https://www.textcontrol.com/blog/2014/03/17/inserting-background-images-into-tx-text-control/
- **LLMs URL:** https://www.textcontrol.com/blog/2014/03/17/inserting-background-images-into-tx-text-control/llms.txt
- **LLMs-Full URL:** https://www.textcontrol.com/blog/2014/03/17/inserting-background-images-into-tx-text-control/llms-full.txt

---

Background images can be easily added to pages in TX Text Control by placing the images behind the text. Thanks to flexible methods and [insertion mode options](https://docs.textcontrol.com/textcontrol/windows-forms/ref.txtextcontrol.image.insertionmode.property.htm), you can simply loop through all pages in order to insert an image at a fixed position on the current page behind the text.

![Inserting background images](https://s1-www.textcontrol.com/assets/dist/blog/2014/03/17/a/assets/tx_backgroundimages.webp "Inserting background images")In order to center the image horizontally, the image width must be subtracted from the page width divided by 2 to get the x value for the location. The vertical value is calculated analogically with the horizontal value.

```
// factor to convert 1/100 inch to twips
int dpix = (int)(1440 / textControl1.CreateGraphics().DpiX);

// loop through all pages
foreach (TXTextControl.Page page in textControl1.GetPages())
{
    System.Drawing.Image img = Image.FromFile("bgimage.png");

    // calculate the position to center the image on the current page
    int xLocation =
        (int)(((textControl1.Sections[page.Section].Format.PageSize.Width
        - img.Size.Width) * dpix) / 2);

    int yLocation =
        (int)(((textControl1.Sections[page.Section].Format.PageSize.Height
        - img.Size.Height) * dpix) / 2);

    TXTextControl.Image TXimg = new TXTextControl.Image(img);

    // add the image to the page
    textControl1.Images.Add(
        TXimg,
        page.Number,
        new Point(xLocation, yLocation),
        TXTextControl.ImageInsertionMode.FixedOnPage |
            TXTextControl.ImageInsertionMode.BelowTheText);
}
```

---

## About Bjoern Meyer

As CEO, Bjoern is the visionary behind our strategic direction and business development, bridging the gap between our customers and engineering teams. His deep passion for coding and web technologies drives the creation of innovative products. If you're at a tech conference, be sure to stop by our booth - you'll most likely meet Bjoern in person. With an advanced graduate degree (Dipl. Inf.) in Computer Science, specializing in AI, from the University of Bremen, Bjoern brings significant expertise to his role. In his spare time, Bjoern enjoys running, paragliding, mountain biking, and playing the piano.

- [LinkedIn](https://www.linkedin.com/in/bjoernmeyer/)
- [X](https://x.com/txbjoern)
- [GitHub](https://github.com/bjoerntx)

---

## Related Posts

- [Windows Forms Tutorial: Create Your First Windows Forms C# Application](https://www.textcontrol.com/blog/2024/08/26/windows-forms-tutorial-create-your-first-windows-forms-csharp-application/llms.txt)
- [How to Mail Merge MS Word DOCX Documents in ASP.NET Core C#](https://www.textcontrol.com/blog/2023/10/16/how-to-mail-merge-ms-word-docx-documents-in-aspnet-core-csharp/llms.txt)
- [Creating an Angular Document Editor Application with a Node.js WebSocket Server](https://www.textcontrol.com/blog/2023/08/24/creating-an-angular-document-editor-application-with-a-nodejs-websocket-server/llms.txt)
- [Adding SVG Watermarks to Documents](https://www.textcontrol.com/blog/2022/01/28/adding-svg-watermarks-to-documents/llms.txt)
- [Using MailMerge in ASP.NET Core 6 Web Applications](https://www.textcontrol.com/blog/2022/01/27/using-mailmerge-in-aspnet-core-6-web-applications/llms.txt)
- [DocumentViewer for React Prerelease](https://www.textcontrol.com/blog/2020/10/27/document-viewer-for-react-prerelease/llms.txt)
- [New DocumentViewer Signature Tutorial Sample](https://www.textcontrol.com/blog/2020/08/18/new-documentviewer-signature-tutorial-sample/llms.txt)
- [Creating an ASP.NET MVC DocumentViewer Application With Razor](https://www.textcontrol.com/blog/2020/01/01/creating-an-aspnet-mvc-documentviewer-application-with-razor/llms.txt)
- [Creating Your First Windows Forms Application with C#](https://www.textcontrol.com/blog/2020/01/01/creating-your-first-windows-forms-application-with-csharp/llms.txt)
- [Creating Your First WPF Application](https://www.textcontrol.com/blog/2020/01/01/creating-your-first-wpf-application/llms.txt)
- [Creating a WPF Ribbon Application](https://www.textcontrol.com/blog/2020/01/01/creating-a-wpf-ribbon-application/llms.txt)
- [Integrate Document Editing into any HTML Client using the HTML Widget](https://www.textcontrol.com/blog/2020/01/01/integrate-document-editing/llms.txt)
- [Creating an ASP.NET MVC Application With Razor](https://www.textcontrol.com/blog/2020/01/01/creating-an-aspnet-mvc-application-with-razor/llms.txt)
- [Creating A Windows Forms Ribbon Application](https://www.textcontrol.com/blog/2020/01/01/creating-a-windows-forms-ribbon-application/llms.txt)
- [Creating Your First ASP.NET Reporting Application](https://www.textcontrol.com/blog/2020/01/01/creating-your-first-aspnet-reporting-application/llms.txt)
- [Creating an ASP.NET Web Forms AJAX Application](https://www.textcontrol.com/blog/2020/01/01/creating-an-aspnet-web-forms-ajax-application/llms.txt)
- [Creating a WebSocket Server Project with Node.js](https://www.textcontrol.com/blog/2020/01/01/creating-a-websocket-server-project-with-nodejs/llms.txt)
- [Creating an Angular Document Editor Application](https://www.textcontrol.com/blog/2020/01/01/creating-an-angular-document-editor-application/llms.txt)
- [ReportingCloud .NET Core Quickstart Tutorial](https://www.textcontrol.com/blog/2019/07/24/reportingcloud-dotnet-core-quickstart-tutorial/llms.txt)
- [Document Permissions and Password Encryption](https://www.textcontrol.com/blog/2019/07/05/document-permissions-and-password-encryption/llms.txt)
- [New Online Sample: Build your First Report](https://www.textcontrol.com/blog/2019/07/03/build-your-first-report/llms.txt)
- [Create your First Document with ReportingCloud](https://www.textcontrol.com/blog/2019/02/19/create-your-first-document-with-reportingcloud/llms.txt)
- [MailMerge: Starting Each Merge Block on a New Page](https://www.textcontrol.com/blog/2016/09/09/mailmerge-starting-each-merge-block-on-a-new-page/llms.txt)
- [Windows Forms and WPF: End a List on Return when Line is Empty](https://www.textcontrol.com/blog/2016/08/26/windows-forms-and-wpf-end-a-list-on-return-when-line-is-empty/llms.txt)
- [Using IFormattedText Objects to Access Elements Across All TextParts in a Document](https://www.textcontrol.com/blog/2016/08/25/using-iformattedtext-objects-to-access-elements-across-all-textparts-in-a-document/llms.txt)
