我正在做類似的事情,以便在報告上有變化的標誌,但我利用報告參數傳遞值。如果圖像是數據的一部分,我不認爲這種通用方法不起作用的原因。
本質上,圖像通過兩個字段。第一個字段是MIME類型值,第二個字段是包含圖像內容的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)
"
- UPDATE: As Ger ARDO的說下面的圖像源必須設置爲「數據庫」
陷阱年輕球員: 通常情況下,圖像看起來可怕,就像他們一直在縮小,即使你傳遞的圖像這似乎是「正確的尺寸」。這是因爲報告呈現爲打印(300 dpi)而不是屏幕(通常爲72或92 dpi)。修復方法是發送大約3倍大的圖像,在報告中設置正確大小,並將圖像上的「Sizing
」屬性更改爲「FitProportional
」。
Thnx很多,非常幫助我! – Martijn 2009-02-23 14:53:24