レポートのロゴを変更するために同様のことをしていますが、レポートパラメーターを使用して値を渡します。画像がデータの一部である場合、この一般的な方法が機能しない理由はわかりません。
基本的に、画像は 2 つのフィールドに渡されます。最初のフィールドは MIME タイプの値で、2 番目のフィールドは画像コンテンツを含む Base64 でエンコードされた文字列です。
ステップ 1: 画像を Base64 エンコーディングに変換します。ImageFormat.Png
( MIME タイプを簡単にするために、コードは常にこのメソッドに渡されます)
private static string ConvertImageToBase64(Image image, ImageFormat format)
{
byte[] imageArray;
using (System.IO.MemoryStream imageStream = new System.IO.MemoryStream())
{
image.Save(imageStream, format);
imageArray = new byte[imageStream.Length];
imageStream.Seek(0, System.IO.SeekOrigin.Begin);
imageStream.Read(imageArray, 0, imageStream.Length);
}
return Convert.ToBase64String(imageArray);
}
ステップ 2: 画像と MIME タイプをレポートに渡します。
reportParams[0] = new ReportParameter("ReportLogo", base64Logo);
reportParams[1] = new ReportParameter("ReportLogoMimeType", "image/png");
_reportViewer.LocalReport.SetParameters(reportParams);
ステップ 3: レポートで、画像に次のプロパティを設定します (引用符なし)。
- MIME タイプ: "
=Parameters!ReportLogoMimeType.Value
"
- 値: "
=System.Convert.FromBase64String(Parameters!ReportLogo.Value)
"
- 更新: Gerardo が以下に述べているように、イメージ ソースを「データベース」に設定する必要があります。
若いプレイヤーへの罠:
「適切なサイズ」のように見える画像を渡したとしても、画像が恐ろしく、拡大縮小されたように見えることがよくあります。これは、レポートが画面 (通常は 72 または 92 dpi) ではなく、印刷 (300 dpi) 用にレンダリングされるためです。修正するには、大きすぎる約 3 倍の画像を送信し、レポートで正しいサイズに設定Sizing
し、画像の " " プロパティを" " に変更しFitProportional
ます。