Страница 1 из 1

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

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

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

Добавлено: 03 мар 2008, 10:30
ask
На самом деле рисунок должен быть не более 500 кб. Можно ли обойти это ограничение?

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

Добавлено: 03 мар 2008, 10:46
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;
Спасибо.

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

Добавлено: 03 мар 2008, 10:57
ask
пробовал использовать второй вариант. Ошибки не возникает, но рисунок не отображается. Может надо вызвать что то типа Invalidate?

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

Добавлено: 03 мар 2008, 11:09
Edward
Если у Вас это Web приложение, то попробуйте увеличить время ServerTimeOut у StiWebViewer.

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

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

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

Спасибо.

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

Добавлено: 04 мар 2008, 11:44
ask
Выслал вам приложение. Но суть ведь ясна. Я на этапе дизайна создаю рисунок, располагаю его как мне хочется, а в каччестве источника данных отдаю ему переменную. Потом компилю отчет и пытаюсь этой переменной присвоить значение. Значение присваивается, никаких ошибок не выдается, но в превью отчета, этот рисунок не видно. С CompiledReport то же самое. Видел в мане пример с созданием компонента StiImage. Мне это не совсем подходит, хотелось бы разделить процесс дизайна и заполнение отчета данными. Заранее спасибо.

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

Добавлено: 04 мар 2008, 12:10
Edward
Вышлите, пожалуйста, также и шаблон отчета (mrt файл).

Спасибо.

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

Добавлено: 05 мар 2008, 08:48
ask
Выслал вам mrt файл отчета.

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

Добавлено: 05 мар 2008, 11:39
Edward
Измените, пожалуйста, Ваш код следующим образом:

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

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

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

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

Спасибо.