zoukankan      html  css  js  c++  java
  • DevExpress.chartContro控件保存图片和打印图片

            private void pictureBox1_Click(object sender, EventArgs e)
            {
                ////实例化打印对象
                PrintDocument print = new PrintDocument();
                //打印事件
                print.PrintPage += new PrintPageEventHandler(print_PrintPage);
                //开始打印
                PrintDialog pd = new PrintDialog();
                if (pd.ShowDialog() == DialogResult.OK)
                {
                    //print.PrinterSettings.DefaultPageSettings.Landscape = true;
                    print.Print();
                }
                //打印之后删除保存在本地的图片
                 print.EndPrint += new PrintEventHandler(print_EndPrint);             
            }
    
            /// <summary>
            ///  LabHemodialysis产生的图保存的本地,并且获取
            /// </summary>
            /// <returns></returns>
            private Image get_Image() {
                Bitmap bmp;
                if (str_ItemName.Contains("/"))
                {
                    string str_ItemNameRelapce = str_ItemName.Replace("/", "");
                    LabHemodialysis.ExportToImage(@"C:" + str_ItemNameRelapce + ".Jpeg", System.Drawing.Imaging.ImageFormat.Jpeg);
                    bmp = new Bitmap(@"C:" + str_ItemNameRelapce + ".Jpeg");
                }
                else {
                    //保存到c盘        
                    LabHemodialysis.ExportToImage(@"C:" + str_ItemName + ".Jpeg", System.Drawing.Imaging.ImageFormat.Jpeg);
                    //从c盘获取图片
                    bmp = new Bitmap(@"C:" + str_ItemName + ".Jpeg");
                }
               return bmp;
            }
            //删除本地保存的图片
            private void delete_Image()
            {
                System.IO.FileInfo file = new System.IO.FileInfo(@"C:" + str_ItemName + ".Jpeg");
                if (file.Exists)
                {
                    file.Delete();
                }  
            }
            private void print_EndPrint(object sender, PrintEventArgs e)
            {
                delete_Image();
            }
           private void print_PrintPage(object sender, PrintPageEventArgs e)
            {
    
                Image img = get_Image();
                Image rotataImage = Rotate((Bitmap)img, 90);
                e.Graphics.DrawImage(rotataImage,0,0); 
    
            }
           /// <summary>
           /// 以逆时针为方向对图像进行旋转
           /// </summary>
           /// <param name="b">位图流</param>
           /// <param name="angle">旋转角度[0,360](前台给的)</param>
           /// <returns></returns>
           private Bitmap Rotate(Bitmap b, int angle)
           {
               angle = angle % 360;
               //弧度转换
               double radian = angle * Math.PI / 180.0;
               double cos = Math.Cos(radian);
               double sin = Math.Sin(radian);
               //原图的宽和高
               int w = b.Width;
               int h = b.Height;
               int W = (int)(Math.Max(Math.Abs(w * cos - h * sin), Math.Abs(w * cos + h * sin)));
               int H = (int)(Math.Max(Math.Abs(w * sin - h * cos), Math.Abs(w * sin + h * cos)));
               //目标位图
               Bitmap dsImage = new Bitmap(W, H);
               System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(dsImage);
               g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.Bilinear;
               g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
               //计算偏移量
               Point Offset = new Point((W - w) / 2, (H - h) / 2);
               //构造图像显示区域:让图像的中心与窗口的中心点一致
               Rectangle rect = new Rectangle(Offset.X, Offset.Y, w, h);
               Point center = new Point(rect.X + rect.Width / 2, rect.Y + rect.Height / 2);
               g.TranslateTransform(center.X, center.Y);
               g.RotateTransform(360 - angle);
               //恢复图像在水平和垂直方向的平移
               g.TranslateTransform(-center.X, -center.Y);
               g.DrawImage(b, rect);
               //重至绘图的所有变换
               g.ResetTransform();
               g.Save();
               g.Dispose();
               //dsImage.Save("yuancd.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
               return dsImage;
           }
         
            private string printName;//打印的名称
            private void boxSava_Click(object sender, EventArgs e)
            {
                SaveFileDialog sf = new SaveFileDialog();
                sf.Filter = "Image files(*.jpeg,*.gif)|*.jpeg;*.gif";
                sf.Title = "趋势图导出";
                sf.FileName = str_ItemName+"("+DateTime.Now+")"+"趋势图";
                printName = sf.FileName;
                if (sf.ShowDialog() == DialogResult.OK)
                {
                   
                    LabHemodialysis.ExportToImage(sf.FileName, System.Drawing.Imaging.ImageFormat.Jpeg);
                }
            }
  • 相关阅读:
    HDU 3835 R(N)
    HDU 2498 Digits
    HUST 1027 Enemy Target!
    【POJ 3714】 Raid
    【POJ 2965】 The Pilots Brothers' refrigerator
    【POJ 2054】 Color a Tree
    【POJ 1328】 Radar Installation
    【POJ 3190】 Stall Reservations
    【POJ 3614】 Sunscreen
    【BZOJ 3032】 七夕祭
  • 原文地址:https://www.cnblogs.com/WangJunZzz/p/5612247.html
Copyright © 2011-2022 走看看