Как задать картинку в отчете из кода пользовательского приложения

08.01.2020

Довольно часто возникает потребность задавать различные изображения в отчете в зависимости от каких-либо условий или входящих параметров. С этой проблемой столкнулся пользователь генератора отчетов List&Label:

Есть ли способ программной вставки встроенного изображения в документ List & Label из кода .net?

Однако, пользователь не нашел решения.

К сожалению, невозможно вставить изображение из кода .NET. Это возможно только при работе с отчетом в дизайнере List & Label.

В свете этого, хочется показать, как такое можно реализовать в генераторе отчетов FastReport.Net.

Итак, при создании отчета мы работаем со всеми его объектами напрямую – создаем их, добавляем на страницу отчета, задаем свойства. Рассмотрим простой пример создания отчета из кода пользовательского приложения с картинкой внутри.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//Create instance of class Report
 Report report = new Report();
 //Add report page
 ReportPage page = new ReportPage();
 report.Pages.Add(page);
 page.CreateUniqueName();
 //App data band
 DataBand data = new DataBand();
 //Add data band to page
 page.Bands.Add(data);
 data.CreateUniqueName();
 data.Height = Units.Centimeters * 1; //Set band height
 //Create picture object
 PictureObject pic = new PictureObject();
 pic.Bounds = new RectangleF(0, 0, Units.Centimeters * 5, Units.Centimeters * 5); //Set object bounds
 pic.Image = new Bitmap("../../App_Data/snow_flake.ico"); //Set picture
 pic.Parent = data; //Set picture parent object
 pic.CreateUniqueName();
 report.Prepare(); //Build report
 report.Show(); //Show report

Это очень простой пример отчета, в котором всего лишь один бэнд «Данные». Так как этот отчет целиком создается в коде программы, то нет никаких проблем создать объект с картинкой и поместить в отчет. Создание отчета из кода позволяет нам как угодно менять его в зависимости от логики программы.

Рассмотрим другой случай. Допустим у вас уже есть шаблон отчета, созданный в дизайнере. Вы хотите менять картинку в отчете в зависимости от логики программы. В таком случае, в шаблоне отчета уже должен быть объект Picture, а вы просто будете заменять саму картинку из кода пользовательского приложения. Вот как будет выглядеть код в программе:         

1
2
3
4
5
6
7
8
9
10
11
12
13
14
 //Create report object
 Report report = new Report();
 //Load report template into the report obj
 report.Load("../../App_Data/Picture.frx");
 //Get picture object from the report template
 PictureObject pic = report.FindObject("Picture1") as PictureObject;
 //Set object bounds
 pic.Bounds = new RectangleF(0, 0, Units.Centimeters * 5, Units.Centimeters * 5);
 //Set the image
 pic.Image = new Bitmap("../../App_Data/snow_flake.ico");
 //Build report
 report.Prepare();
 //Show report
 report.Show();

Здесь, мы находим объект с картинкой в шаблоне отчета и изменяем его свойства по своему желанию.

И, наконец, третий вариант работы с объектом Picture – из встроенного скрипта отчета. Скрипт отчета позволяет изменять шаблон и данные в отчете, как угодно. Вы можете предварительно добавить в шаблон объект Picture, а можете добавить его непосредственно в скрипте отчета. Поистине, безграничная гибкость. Нет необходимости использовать пользовательское приложение для управления содержимым отчета. Это большой плюс для меня, ведь отпадает необходимость править код приложения.

Пример для задания изображения в скрипте отчета крайне прост:

1
Picture1.Image = new Bitmap("C:/Users/Dimon/source/repos/PictureSetting/PictureSetting/App_Data/snow_flake.ico");

Вам нужно только определиться с событием, в котором вы хотите изменять картинку, например, для объекта Picture можно использовать событие BeforePrint.

.NET FastReport
10 июля 2026

Как настроить Content Security Policy для отчетов FastReport .NET WEB

Узнайте, как настроить Content Security Policy для отчётов FastReport .NET WEB: обзор директив и значений CSP, изменения в архитектуре FastReport, типичные сценарии обхода и способы защиты.
22 июня 2026

Как настроить отчет с Business Objects из кода и дизайнера в FastReport .NET

В этой статье рассматривается реальный пример создания и использования шаблона отчета .frx для подключения к иерархическим бизнес-объектам в FastReport .NET.
21 апреля 2026

Использование водяных знаков в FastReport VCL

В статье подробно рассмотрели функционал добавления водяных знаков в FastReport VCL — как через визуальный интерфейс, так и программно, с помощью кода на Delphi и в скриптах отчётов.

Не является публичной офертой
© 1998-2026 ООО «Быстрые отчеты»