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);
            }
        }
时间: 2024-11-05 17:27:31

DevExpress.chartContro控件保存图片和打印图片的相关文章

devexpress表格控件gridcontrol图片列,按钮列,时间列等特殊列的实现

1.项目中经常会在表格中插入按钮列,图片列,表格列一些非文本的特殊列.如何在devexpress表格控件gridcontrol中实现呢?以下列举一个实现添加图片列,按钮列,时间列,按钮列,开关列的示例,效果图如下: 2.数据代码,其中图片列使用了两种方法,大家可根据自己要求变跟. Image img = Image.FromFile(Application.StartupPath+"\\img\\11111.png");//方法1 //byte[] imgbyte=getImageBy

DevExpress Grid控件经典常用功能代码收集

随着DevExpress 控件包越来越多的被中国用户使用,由于是英文版本,看英文版使用说明非常困难,慧都控件网在DevExpress 控件包使用方面有多年的研究,慧都控件网会不断的把DevExpress 使用经验分享给大家.»更多DevExpress开发资源与帮助文档 下面是我们平时收集最常用的DevExpress Winform 4个代码片段,比较常用,希望对广大DEV用户有帮助. 一 .GridControl的删除操作 private void rILinkEditInfoDel_Click

控件中添加GIF图片以及运用双缓冲使其不闪烁以及背景是gif时使控件(如panel)变透明

Image img = Image.FromFile(@"C:\Users\joeymary\Desktop\3.gif"); pictureBox1.Image =img.Clone() as Image; //label1.Image = img.Clone() as Image;label1.Size = img.Size; img.Dispose(); label跟pictureBox中均可使用. 由于窗体重绘会导致控件闪烁 方法一: /// <summary> /

FileUpload控件实现单按钮图片自动上传并带预览显示

FileUpload控件实现单按钮图片自动上传并带预览显示 1.实现原理: FileUpload控件默认不支持服务端的ONCHANGE事件,此时用一种变通的方法借用客户端的onchange事件,调用__doPostBack方法来用LinkButton的OnClick事件模拟一个事件触发的过程,可以在LinkButton的OnClick事件中进行图片的上传,和预览加载. 2.关键代码:      页面代码: 1 <asp:FileUpload ID="fuPhoto" onchan

自定义Gallery控件实现简单3D图片浏览器

本篇文章主要介绍如何使用自定义的Gallery控件,实现3D效果的图片浏览器的效果. 话不多说,先看效果. 上面是一个自定义的Gallery控件,实现倒影和仿3D的效果,下面是一个图片查看器,点击上面的小图片,可以在下面查看大图片. 下面重点说一下,实现图片查看器的思路. 1.手机中图片路径的获取 首先,先不管图片如何展示,如果我们想实现图片查看器的功能,我们首先需要做的是获取到所有的图片的路径信息,只有这样,我们才能实现对图片的查看. 我们可以使用下面的代码实现 private List<St

02-常见控件:ImageView(图片视图)、slider(滑动器)、switch(开关)使用

效果图:       通过点击设置 将显示如第二张图所示                            第三张为项目目录文件 供参考              主要代码: // // WHBLAPViewController.h // 04-whblap查看器 // // Created by whblap on 14-6-6. // Copyright (c) 2014年 whblap. All rights reserved. // #import <UIKit/UIKit.h>

android控件布局 ToggleButton按钮 图片和文字

ToggleButton控件具有checked属性对于要切换状态的功能按钮来说十分好用 这里以phone的开启DTMFTwelveKeyDialer的按钮为例 展示其效果和布局 activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" andro

DevExpress 用户控件 分页(中)

说明: 1)具体调用请关注 看DevExpress 用户控件 分页(下) datanavi_ButtonClick 是DataNavigator的ButtonClikc事件 视图设计器: 分页用户控件后台代码如下: using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Linq; using

DevExpress 用户控件 分页(上)

说明:使用用户控件分页,完成后,使用时非常简单,数据绑定,调用自己写的一个事件就OK了 前期准备工作: (1)添加一个用户控件 命名PageCtrl (2)打开代码:   [csharp] view plaincopyprint? //引用 using DevExpress.XtraEditors; //窗体继承 public partial class PageCtrl : DevExpress.XtraEditors.XtraUserControl (3)设置窗体属性 AutoScaleMo