you may also do like this :
- put your header content in a separate report
- place an image in the header of the main report pointing its source to a dataset field
- in your code, first render your header report to an image, then add image as a datasource of the main report, like this:
ReportViewer header_report = new ReportViewer();
header_report.LocalReport.ReportPath=PATH_TO_HEADER_REPORT
byte[] IMAGE_CONTAINER = rp.LocalReport.Render("Image", "<DeviceInfo><OutputFormat>JPEG</OutputFormat><DpiX>1000</DpiX><DpiY>1000</DpiY></DeviceInfo>");
// THEN ADD TO THE MAIN REPORT DATASOURCES
main_reportviewer.LocalReport.DataSources.Add(new ReportDataSource("DataSet2", new List<CUSTOM_OBJECT>() { A_BYTE[]_FIELD=IMAGE_CONTAINER }));
This should do the trick.
NB : Think of setting the image properties properly so that the rendered image doesn't overflow the box.
Also, in the header report make sure to set the report width/height the same as the width/height of the body