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);
            }
        }

 

转载于:https://www.cnblogs.com/WJ--NET/p/5612247.html

DevExpress打印相关代码 using System; using System.Windows.Forms; using DevExpress.XtraPrinting; using System.Xml.Serialization; namespace MyDevExpressDemo { /// /// PrintSettingController 的摘要说明。 /// public class PrintSettingController { PrintingSystem ps = null; string formName=null; DevExpress.XtraPrinting.PrintableComponentLink link=null; /// /// /// /// 要打印的部件 /// 此部件对应的布局信息 public PrintSettingController(IPrintable control,string FormName) { formName=FormName; ps=new DevExpress.XtraPrinting.PrintingSystem(); link=new DevExpress.XtraPrinting.PrintableComponentLink(ps); ps.Links.Add(link); link.Component=control; ps.PageSettingsChanged-=new EventHandler(ps_PageSettingsChanged); LoadPageSetting(); ps.PageSettingsChanged+=new EventHandler(ps_PageSettingsChanged); ps.AfterMarginsChange+=new MarginsChangeEventHandler(ps_AfterMarginsChange); } public void Preview() { try { if(DevExpress.XtraPrinting.PrintHelper.IsPrintingAvailable) { Cursor.Current=Cursors.AppStarting; if(_PrintHeader!=null) { PageHeaderFooter phf = link.PageHeaderFooter as PageHeaderFooter; phf.Header.Content.Clear(); phf.Header.Content.AddRange(new string[] {"",_PrintHeader,""}); phf.Header.Font=new System.Drawing.Font("宋体",14,System.Drawing.FontStyle.Bold); phf.Header.LineAlignment=BrickAlignment.Center; } link.PaperKind=ps.PageSettings.PaperKind; link.Margins=ps.PageSettings.Margins; link.Landscape=ps.PageSettings.Landscape; link.CreateDocument(); ps.PreviewForm.Show(); } else { Cursor.Current=Cursors.Default; MessageBox.Show("打印机不可用", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } } finally { Cursor.Current=Cursors.Default; } } /// /// 打印控制器 /// /// 要打印的部件 public PrintSettingController(IPrintable control) { if(control==null)return; Control c=(Control)control; formName=c.FindForm().GetType().FullName+"."+c.Name; ps=new DevExpress.XtraPrinting.PrintingSystem(); link=new DevExpress.XtraPrinting.PrintableComponentLink(ps); ps.Links.Add(link); link.Component=control; ps.PageSettingsChanged-=new EventHandler(ps_PageSettingsChanged); LoadPageSetting(); ps.PageSettingsChanged+=new EventHandler(ps_PageSettingsChanged); ps.AfterMarginsChange+=new MarginsChangeEventHandler(ps_AfterMarginsChange); } public void ExportToHtml() { try { using(SaveFileDialog fd=new SaveFileDialog()) { fd.Title="导出HTML文件"; fd.RestoreDirectory=true; fd.Filter="HTML文件|*.htm"; fd.FilterIndex=1; if(fd.ShowDialog()==DialogResult.OK) { // if(obj is DevExpress.XtraGrid.GridControl) // { // ((DevExpress.XtraGrid.GridControl)obj).ExportToHtml(fd.FileName); // MessageBox.Show("文件导出成功","导出",MessageBoxButtons.OK,MessageBoxIcon.Information); // } // else if(obj is DevExpress.XtraTreeList.TreeList) // { link.CreateDocument(); ps.ExportToHtml(fd.FileName); MessageBox.Show("文件导出成功","导出",MessageBoxButtons.OK,MessageBoxIcon.Information); // } } } } finally { } } /// /// 网格分组时要导出,请使用这个, /// public void GridGroupToExcel() { DevExpress.XtraGrid.GridControl grid=this.link.Component as DevExpress.XtraGrid.GridControl; if(grid!=null) { using(SaveFileDialog fd=new SaveFileDialog()) { fd.Title="导出Excel文件"; fd.RestoreDirectory=true; fd.Filter="Excel文件|*.xls"; fd.FilterIndex=1; if(fd.ShowDialog()==DialogResult.OK) { grid.ExportToExcel(fd.FileName); MessageBox.Show("文件导出成功","导出",MessageBoxButtons.OK,MessageBoxIcon.Information); } } } } public void ExportToExcel() { try { using(SaveFileDialog fd=new SaveFileDialog()) { fd.Title="导出Excel文件"; fd.RestoreDirectory=true; fd.Filter="Excel文件|*.xls"; fd.FilterIndex=1; if(fd.ShowDialog()==DialogResult.OK) { // if(obj is DevExpress.XtraGrid.GridControl) // { // ((DevExpress.XtraGrid.GridControl)obj).ExportToExcel(fd.FileName); // MessageBox.Show("文件导出成功","导出",MessageBoxButtons.OK,MessageBoxIcon.Information); // } // else if(obj is DevExpress.XtraTreeList.TreeList) // { link.CreateDocument(); ps.ExportToXls(fd.FileName); MessageBox.Show("文件导出成功","导出",MessageBoxButtons.OK,MessageBoxIcon.Information); // } } } } finally { } } string _PrintHeader=null; /// /// 打印时的标题 /// public string PrintHeader { set { _PrintHeader=value; } } /// /// 进行打印 /// public void Print() { try { if(DevExpress.XtraPrinting.PrintHelper.IsPrintingAvailable) { if(_PrintHeader!=null) { PageHeaderFooter phf = link.PageHeaderFooter as PageHeaderFooter; phf.Header.Content.Clear(); phf.Header.Content.AddRange(new string[] {"",_PrintHeader,""}); phf.Header.Font=new System.Drawing.Font("宋体",14,System.Drawing.FontStyle.Bold); phf.Header.LineAlignment=BrickAlignment.Center; } link.PaperKind=ps.PageSettings.PaperKind; link.Margins=ps.PageSettings.Margins; link.Landscape=ps.PageSettings.Landscape; link.CreateDocument(); link.CreateDocument(); ps.Print(); } else { Cursor.Current=Cursors.Default; MessageBox.Show("打印机不可用", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } } finally { } } private void ps_AfterMarginsChange(object sender, MarginsChangeEventArgs e) { SavePageSetting(); } private void ps_PageSettingsChanged(object sender, EventArgs e) { SavePageSetting(); } //获取页面设置信息 void LoadPageSetting() { try { string path=System.Windows.Forms.Application.StartupPath+"\\PrintLayout"; if(!System.IO.Directory.Exists(path)) { return; } path+="\\"+formName+".xml"; if(!System.IO.File.Exists(path)) { return; } XmlSerializer ser=new XmlSerializer(typeof(UserPageSetting)); UserPageSetting setting=(UserPageSetting)ser.Deserialize(new System.IO.FileStream(path,System.IO.FileMode.Open,System.IO.FileAccess.Read,System.IO.FileShare.ReadWrite)); System.Drawing.Printing.Margins m=new System.Drawing.Printing.Margins(setting.Left,setting.Right,setting.Top,setting.Bottom); ps.PageSettings.Assign(m,(System.Drawing.Printing.PaperKind)setting.PaperKind,setting.Landscape); } catch{} } /// /// 保存当前网格的布局 /// void SavePageSetting() { try { string path=System.Windows.Forms.Application.StartupPath+"\\PrintLayout"; if(!System.IO.Directory.Exists(path)) { System.IO.Directory.CreateDirectory(path); } path+="\\"+formName+".xml"; DevExpress.XtraPrinting.XtraPageSettings setting= ps.PageSettings; UserPageSetting s=new UserPageSetting(); s.Landscape=setting.Landscape; s.Left=setting.Margins.Left; s.Right=setting.Margins.Right; s.Top=setting.Margins.Top; s.Bottom=setting.Margins.Bottom; s.PaperKind=(int)setting.PaperKind; XmlSerializer ser=new XmlSerializer(s.GetType()); ser.Serialize(new System.IO.FileStream(path,System.IO.FileMode.Create,System.IO.FileAccess.Write,System.IO.FileShare.ReadWrite),s); } catch{} } } /// /// 最终用户对某个打印页的设置 /// [Serializable()] public class UserPageSetting { public UserPageSetting() { } public bool Landscape; public int PaperKind; public int Top; public int Bottom; public int Left; public int Right; } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值