Как я могу динамически центрировать изображение в отчете MS Reporting Services?

Изначально в MS Reporting Services элемент изображения не позволяет центрировать само изображение, когда размеры неизвестны во время разработки. Другими словами, изображение (если оно меньше размеров, выделенных на поверхности конструктора) будет привязано к верхнему левому углу, а не к центру.

Мой отчет будет знать URL-адрес изображения во время выполнения, и мне нужно иметь возможность центрировать это изображение, если оно меньше размеров, указанных в моем конструкторе.

Ответов (1)

Решение

Вот как мне это удалось. С помощью Криса Хейса

Размер изображения должен быть таким большим, как вы хотите, чтобы оно было в отчете, измените свойство «Размер» на «Обрезать» .

Динамически установите левый отступ изображения, используя выражение:

=CStr(Round((4.625-System.Drawing.Image.FromStream(System.Net.WebRequest.Create(Parameters!LogoURL.Value).GetResponse().GetResponseStream()).Width/96)/2,2)) & "in"

Динамически установите верхнее заполнение изображения с помощью выражения:

=CStr(Round((1.125-System.Drawing.Image.FromStream(System.Net.WebRequest.Create(Parameters!LogoURL.Value).GetResponse().GetResponseStream()).Height/96)/2,2)) & "in"

Первым изменением, внесенным в код Криса, было изменение размеров моего элемента изображения в отчете (мое изображение было 4,625x1,125 - см. Числа выше).

Я также решил получать поток из URL-адреса, а не из базы данных . Я использовал WebRequest.Create.GetResponse. GetResponseStream так и поступает.

Пока все хорошо - надеюсь, это поможет!