MS Reporting Services レポートで画像を動的に中央に配置する方法

MS Reporting Services を使用したことがある方は、レポート内で画像を中央に配置することが難しい作業であることに気づくかもしれません。特に、デザイン段階で画像の寸法が不明な場合などです。デフォルトでは、画像要素は割り当てられたスペースの左上隅に固定されているため、画像が指定されたエリアよりも小さい場合には理想的ではないレイアウトになることがあります。

このチュートリアルでは、ランタイムで取得した画像の寸法に基づいて、レポート内で画像を動的に中央に配置するための解決策を探ります。

課題

メインの課題は、表示したい画像がレポートのレイアウトで提供されているスペースよりも小さい可能性がある点です。MS Reporting Services はそのような場合に画像の動的中央配置をネイティブでサポートしていません。ただし、いくつかの工夫を施すことで、この制限を克服できます。

  • 問題: 画像が左上隅に固定されています。
  • 必要: デザイン時に寸法が不明な画像を中央に配置する必要があります。

解決策

Chris Hays のアプローチを使うことで、ランタイムの寸法に基づいて画像を中央に配置することができます。以下は、従うべき手順の内訳です。

1. 画像サイズの設定

まず、画像要素が希望する寸法に設定されていることを確認します。画像の正確なサイズは異なる場合がありますが、私たちのケースでは 幅4.625インチ、高さ1.125インチ に設定します。

  • サイズプロパティ: 画像要素の “Sizing” プロパティを “Clip.” に変更します。これにより、画像が歪むことなく表示されます。

2. 左パディングの動的設定

次に、画像の幅に基づいて左パディングを動的に設定する必要があります。以下の式を使用して左パディングを計算します。

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

3. 上パディングの動的設定

同様に、次の式を使用して上パディングも動的に設定する必要があります。

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

修正と改善

上記の解決策を実装する際に、いくつかの重要な修正が行われました。

  • 画像要素の寸法は、私の特定の要求である 幅4.625インチ、高さ1.125インチ に合わせて調整されました。
  • コードは、データベースではなく URL から 画像ストリームを取得するように修正されました。これに対して、リソースをオンラインで取得するのに便利な WebRequest.Create.GetResponse を利用しました。

結論

これらの手順を実装することで、MS Reporting Services レポート内で画像を効果的に中央に配置でき、プレゼンテーションのプロフェッショナルでクリーンな外観を確保できます。ここで説明された方法は、動的表現の力と、それがレポートデザインにどのような柔軟性を提供できるかを示しています。

次回、画像を動的に中央に配置する必要に直面したときは、このガイドを思い出して、レポートを大幅に視覚的に魅力的にしてください!