Рисунок в отчете

Обсуждение Stimulsoft Reports.NET
Ответить
ask
Сообщения: 50
Зарегистрирован: 21 ноя 2007, 11:02
Откуда: Kazan

Рисунок в отчете

Сообщение ask »

Здравстуйте. Пытаюсь прицепить к отчету рисунок. Делаю это через _report.Dictionary.Variables[varName].ValueObject = srcBmp; После чего пытаюсь скомпилить отчет и открыть его в превью. Когда рисунки маленькие, в пределах 1 МБ все в порядке. Когда же больше, то выскакивает такая ошибка: error CS1647: An expression is too long or complex to compile.
ask
Сообщения: 50
Зарегистрирован: 21 ноя 2007, 11:02
Откуда: Kazan

Рисунок в отчете

Сообщение ask »

На самом деле рисунок должен быть не более 500 кб. Можно ли обойти это ограничение?
Edward
Сообщения: 930
Зарегистрирован: 09 июн 2006, 12:23

Рисунок в отчете

Сообщение Edward »

Дело в том, что все, что Вы добавляете в design-time, сериализуется в код. Класс отчета через некоторое время становится больше допустимого средой .Net размера, чтобы быть скомпилированным, и Вы получаете сообщение об ошибке.

В случае рисунков большого размера, используйте, пожалуйста загрузку этих изображений в runtime режиме.

Самый простой способ - это загрузить в BeforePrint событии бэнда или страницы необходимые Вам картинки:

Код: Выделить всё

Image1.Image = Image.FromFile("Image1.gif");
или
Image1.Image = Stimulsoft.Base.Drawing.StiImageFromURL.LoadBitmap("http://www.domain.com/bitmap.gif");
или
до построения отчета загрузить картинку в переменную:
StiImage im = new StiImage();
im.Image = Image.FromFile("d:\\myImage.jpg");
report.Compile();
report["MyImage"] = im.Image;
Спасибо.
ask
Сообщения: 50
Зарегистрирован: 21 ноя 2007, 11:02
Откуда: Kazan

Рисунок в отчете

Сообщение ask »

пробовал использовать второй вариант. Ошибки не возникает, но рисунок не отображается. Может надо вызвать что то типа Invalidate?
Edward
Сообщения: 930
Зарегистрирован: 09 июн 2006, 12:23

Рисунок в отчете

Сообщение Edward »

Если у Вас это Web приложение, то попробуйте увеличить время ServerTimeOut у StiWebViewer.

Если Вы работаете с переменной, как указали в первом вопросе, то для скомпилированного отчета код должен выглядеть следующим образом:

Код: Выделить всё

_report[varName] = srcBmp;
Если и после этого проблема не ушла, высылайте тестовое приложение (с картинкой) на support[at]stimulsoft.com для анализа.

Спасибо.
ask
Сообщения: 50
Зарегистрирован: 21 ноя 2007, 11:02
Откуда: Kazan

Рисунок в отчете

Сообщение ask »

Выслал вам приложение. Но суть ведь ясна. Я на этапе дизайна создаю рисунок, располагаю его как мне хочется, а в каччестве источника данных отдаю ему переменную. Потом компилю отчет и пытаюсь этой переменной присвоить значение. Значение присваивается, никаких ошибок не выдается, но в превью отчета, этот рисунок не видно. С CompiledReport то же самое. Видел в мане пример с созданием компонента StiImage. Мне это не совсем подходит, хотелось бы разделить процесс дизайна и заполнение отчета данными. Заранее спасибо.
Edward
Сообщения: 930
Зарегистрирован: 09 июн 2006, 12:23

Рисунок в отчете

Сообщение Edward »

Вышлите, пожалуйста, также и шаблон отчета (mrt файл).

Спасибо.
ask
Сообщения: 50
Зарегистрирован: 21 ноя 2007, 11:02
Откуда: Kazan

Рисунок в отчете

Сообщение ask »

Выслал вам mrt файл отчета.
Edward
Сообщения: 930
Зарегистрирован: 09 июн 2006, 12:23

Рисунок в отчете

Сообщение Edward »

Измените, пожалуйста, Ваш код следующим образом:

Код: Выделить всё

pc1.Report = Stimulsoft.Report.StiReport.GetReportFromAssembly("IMAGE.dll");
pc1.Report["iTest"] = Image.FromFile("im1.jpg");
pc1.Report.Render(false);
Извините за неточный предыдущий ответ.

P.S. В последнем пререлиз билде добавлены очень полезные свойства для работы с картинками MinSize и MaxSize, которые ограничивают размеры выводимой картинки.

Дайте знать, если понадобится помощь.

Спасибо.
Ответить