漫漫技术人生路

C#

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

               /// <summary>
        ///
        /// </summary>
        /// <param name="groupid"></param>
        /// <param name="width"></param>
        /// <param name="height"></param>
        private void ShowActionStatusChart(int groupId, int width, int height)
        {
            try {
                //width = 291;
                height = 196;

                DataTable statusData = _service.GetActionStatusReportData(groupId);
                byte[] buffer = GenerateReportViewerBuffer(
                    HttpContext.Current.Server.MapPath(
                    "~/RDLC/Report_ActionStatus.rdlc"), "ReportDataSet_ActionStatus", statusData);
                using (MemoryStream ms = GenerateImageMemoryStream2(buffer, width, height)) {
                    View.ShowReportImage(ms);
                }
            }
            catch {
                throw;
            }
        }
  
    <img src="../Report/ISMS_Report_CreateReportImage.aspx?Model=RiskProfileDef&Groupid= <%= this.GroupId %>
        public void ShowReportImage(MemoryStream ms)
        {
            Response.ClearContent();
            Response.ContentType = "image/Jpeg";
            Response.BinaryWrite(ms.ToArray());//ISMS_Report_CreateReportImage.aspx
        }

    private byte[] GenerateReportViewerBuffer(string rdlcPatch, string tableName, DataTable dt)
        {
            ReportViewer rv = new ReportViewer();
            rv.ProcessingMode = ProcessingMode.Local;
            rv.LocalReport.ReportPath = rdlcPatch;
            rv.LocalReport.DataSources.Clear();
            rv.LocalReport.DataSources.Add(new ReportDataSource(tableName, dt));
            rv.LocalReport.Refresh();

            string format = "Image";
            string encoding;
            string mimeType;
            string extension;
            Warning[] warnings = null;
            string[] streamIDs = null;

            byte[] buffer = rv.LocalReport.Render(format, null, out mimeType, out encoding, out extension, out streamIDs, out warnings);

            return buffer;
        }
  
  
          ///<summary>
        ///Same as GenerateImageMemoryStream, But different cutHeight,width
        /// </summary>
        /// <param name="buffer"></param>
        /// <param name="imgWidth"></param>
        /// <param name="imgHiegth"></param>
        /// <param name="offsetWidth"></param>
        /// <param name="offsetHeight"></param>
        /// <returns></returns>
        private MemoryStream GenerateImageMemoryStreamForRisk(byte[] buffer, int imgWidth, int imgHiegth, int offsetWidth, int offsetHeight)
        {
            int cutHiegth = 200;
            int cutWidth = 300;
            System.Drawing.Image imageReport = null;
            System.Drawing.Bitmap bmPhoto = null;
            System.Drawing.Graphics gbmPhoto = null;
            MemoryStream msReport = null;
            MemoryStream msResult = null;

            try
            {
                msReport = new MemoryStream(buffer);
                imageReport = System.Drawing.Image.FromStream(msReport);

                bmPhoto = new System.Drawing.Bitmap(imgWidth, imgHiegth);
                gbmPhoto = System.Drawing.Graphics.FromImage(bmPhoto);

                gbmPhoto.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
                gbmPhoto.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
                gbmPhoto.Clear(System.Drawing.Color.Transparent);

                gbmPhoto.DrawImage(imageReport, new System.Drawing.Rectangle(0, 0, imgWidth, imgHiegth), new System.Drawing.Rectangle(offsetWidth, offsetHeight, cutWidth, cutHiegth), System.Drawing.GraphicsUnit.Pixel);

                msResult = new MemoryStream();
                bmPhoto.Save(msResult, System.Drawing.Imaging.ImageFormat.Jpeg);
            }
            finally
            {
                imageReport.Dispose();
                bmPhoto.Dispose();
                gbmPhoto.Dispose();
                msReport.Dispose();
            }

            return msResult;
        }

posted on 2009-09-11 18:21  javaca88  阅读(320)  评论(0编辑  收藏  举报