Как использовать System.Drawing.Image в RDLC Image Control? - PullRequest
6 голосов
/ 11 февраля 2011

Можно ли использовать System.Drawing.Image в RDLC Image Control? Все, что я читал, было 3 метода:

  • база данных
  • встроенный ресурс
  • внешний файл

Спасибо, спасибо.

EDIT: Исходя из этой .NET или библиотеки C # для формата CGM (метафайл компьютерной графики)? Теперь я получил изображение в формате System.Drawing.Image и хочу отобразить его как часть отчета (как изображение) - это то, что я хочу сделать.

Ответы [ 3 ]

4 голосов
/ 11 февраля 2011

Не уверен, что это то, что вы ищете, но если у вас есть изображение в коде, и вы хотите показать его в отчете, создайте объект-оболочку, у которого есть свойство, которое возвращает изображение в виде байтового массива и даетзатем экземпляр этого класса-оболочки с допустимым изображением для отчета в виде ReportDataSource.

Что-то вроде:

 ReportDataSource logoDataSource = new ReportDataSource();
 logoDataSource.Name = "LogoDS";
 logoDataSource.Value = new List<LogoWrapper>() { yourLogoWrapper };
 localReport.DataSources.Add(logoDS);

В этом отчете вы можете использовать изображение как избаза данных

 =First(Fields!LogoByteArrayProperty.Value, "LogoDS")

Оболочка выглядит примерно так:

 class LogoWrapper{
   ...
   public byte[] LogoByteArrayProperty{
      get{ 
         // Return here the image data
      }
   }
 }

Я использую это довольно часто.Он имеет то преимущество, что мне не нужно добавлять изображение в базу данных или добавлять его в качестве ресурса каждого отчета.И более того, приложение может сказать, какое изображение следует использовать.Обратите внимание, что данный формат изображения должен быть известен из rdlc-движка.Последний вопрос заключается в том, как преобразовать system.drawing.image в байтовый массив.Я работаю с WPF и, следовательно, я не знаю.Но я уверен, что Google ответит на этот вопрос очень надежно.

2 голосов
/ 25 февраля 2013

Вы можете использовать опцию «База данных» вместе с параметрами для динамической установки источника изображения из байтовых массивов.

Код сзади:

var param2 = new ReportParameter()
               {
                   Name = "CompanyLogo",
                   Values = { Convert.ToBase64String(*ByteArrayImageObject*) }
               };
                ReportViewer1.LocalReport.SetParameters(param2);

rdlc Файл:

1- Добавить текстовые параметры 'CompanyLogo' и 'MIMEType'

2- Установить свойство значения изображения на =System.Convert.FromBase64String(Parameters!CompanyLogo.Value)

3- Установить свойство типа MIME на

=Parameters!MIMEType.Value

4 - Использовать «База данных» в качестве источника

Как я могу рендерить изображение PNG (в виде потока памяти) на поверхность отчета .NET ReportViewer

0 голосов
/ 11 февраля 2011


Я не совсем уверен, что вы хотите сделать с этим, но в целом это невозможно. Контроль изображений - это просто держатель изображения в файлах RDLC. Эти 3 параметра определяют местоположение, откуда элемент управления изображения берет изображение, которое нужно отобразить. from- база данных, встроенный ресурс или внешний файл. Если вы дадите мне больше информации о том, чего вы хотите достичь, я могу дать вам какое-то решение.
С наилучшими пожеланиями,
Йордан

...