Работа с с отчетом из кода (Всавить картинку)

отредактировано September 2010 Раздел: FastReport .NET
            Report report = new Report();
            ReportPage page1 = new ReportPage();
            page1.Name = "Page1";
            report.Pages.Add(page1);

            page1.ReportTitle = new ReportTitleBand();
            page1.ReportTitle.Name = "ReportTitle1";

            PictureObject picture1 = new PictureObject();
            string id_skan_image = ((InsID)listBox1.SelectedItem).INDEX.ToString();
            // Получение из базы картинки
            byte[] Foto = SavePar.cn.SqlSelImage("s_skan_image", "id_skan_image", id_skan_image, "image_str");
            if (Foto != null)
            {
                // Преобразование в поток
                MemoryStream ms = new MemoryStream(Foto);

                picture1.Image = Image.FromStream(ms);
                ms.Close();
            }
            else { picture1.Image = relise_1.PapyrusMED.Properties.Resources.NoFoto; }
            picture1.Bounds = new RectangleF(0, 0, 500, 500);
            picture1.SizeMode = PictureBoxSizeMode.CenterImage;

            page1.ReportTitle.Objects.Add(picture1);
            
            report.Show();

Следующий код показывает ошибку при отображении больших картинок... Ошибка GDI+ а маленькие показывает без проблем.
В чем может быть проблема?

Комментарии

  • отредактировано 09:26
    Попробуй заменить на следующий код:
    ...
    
                try
                {
                  // Получение из базы картинки
                   picture1.Image = Image.FromStream(new MemoryStream(
                                              SavePar.cn.SqlSelImage("s_skan_image", "id_skan_image", id_skan_image, "image_str");
    
                }
                catch(Exception ex)
               {
                 picture1.Image = relise_1.PapyrusMED.Properties.Resources.NoFoto;
               }
    
    
    ...
    
  • отредактировано 09:26
    Не сработает - не работает загрузка картинки из stream, что на мой взгляд странно, т.к. стандартный компонент это умеет. Пришлось формировать DataSet, передавать его отчету и как сказано в хелпе передать название столбца, содержащего картинку... Учитывая что хелп рулит (примеров кода там нет выкладываю здесь):
                Report report = new Report();
                ReportPage page1 = new ReportPage();
                page1.Name = "Page1";
                report.Pages.Add(page1);
    
                page1.ReportTitle = new ReportTitleBand();
                page1.ReportTitle.Name = "ReportTitle1";
    
                PictureObject picture1 = new PictureObject();
                
                // Форируем DataSet 
                DataSet DS = SavePar.cn.SQL_select("select image_str from table_with_image ");
    
                DataTable tbr = DS.Tables["Table"];
    
                report.RegisterData(DS, "AllTables");
                // Передача названия столбца
                picture1.DataColumn = "Table.image_str";
                picture1.Bounds = new RectangleF(0, 0, 500, 500);
                picture1.SizeMode = PictureBoxSizeMode.AutoSize;
    
                page1.ReportTitle.Objects.Add(picture1);
    
                try
                {
                    report.Show();
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Test" + ex.Message);
                }
    
    Осталось разобраться с размерами...

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.