欢迎来到人人文库网! | 帮助中心 人人文档renrendoc.com美如初恋!
人人文库网

C# 将控件内容保存为图片

首先要选用容器控件,将需要的控件加入到容器中。

例如:panel容器

                Bitmap newbitmap = new Bitmap(panelW.Width, panelW.Height);
                panelW.DrawToBitmap(newbitmap, new Rectangle(0, 0, newbitmap.Width, newbitmap.Height));
                newbitmap.Save(@"F:\yellowriver\aa\2011\04\25\test.gif");

 

保存整个控件为图片

http://www.cnblogs.com/anchky/archive/2006/10/21/savectlaspic.html

    在vs2005中,MSchart的图片保存遇到了问题。

       vs2003中,可以通过MSChart.EditCopy()方法,再从简帖板(ClipBoard)获得已经绘制的图片,然后再进行保存图片或者打印操作。

       Vs2005中,执行了MSChart.EditCopy()方法之后再次取用剪贴板就会报错,而且是很奇快的内存错误。于是上MSSupport网站寻求相关的帮助,终于搜集到了解决的办法。在这里向大家推荐一个通用的办法,可以保存Control的任何状态为图形。
   需要增加一个辅助类:
     

 1C 将控件内容保存为图片 - yellowriver - 天道酬勤 玩物丧志/// <summary>
 2C 将控件内容保存为图片 - yellowriver - 天道酬勤 玩物丧志    /// 辅助类
 3C 将控件内容保存为图片 - yellowriver - 天道酬勤 玩物丧志    /// </summary>

 4C 将控件内容保存为图片 - yellowriver - 天道酬勤 玩物丧志    public class Win32
 5C 将控件内容保存为图片 - yellowriver - 天道酬勤 玩物丧志    {
 6C 将控件内容保存为图片 - yellowriver - 天道酬勤 玩物丧志        [System.Runtime.InteropServices.DllImport("gdi32", EntryPoint = "BitBlt")]
 7C 将控件内容保存为图片 - yellowriver - 天道酬勤 玩物丧志        public static extern int BitBlt(int hDestDC, int x, int y, int nWidth, int nHeight, int hSrcDC, int xSrc, int ySrc, int dwRop);
 8C 将控件内容保存为图片 - yellowriver - 天道酬勤 玩物丧志        [System.Runtime.InteropServices.DllImport("user32", EntryPoint = "GetWindowDC")]
 9C 将控件内容保存为图片 - yellowriver - 天道酬勤 玩物丧志        public static extern int GetWindowDC(int hwnd);
10C 将控件内容保存为图片 - yellowriver - 天道酬勤 玩物丧志        [System.Runtime.InteropServices.DllImport("user32", EntryPoint = "ReleaseDC")]
11C 将控件内容保存为图片 - yellowriver - 天道酬勤 玩物丧志        public static extern int ReleaseDC(int hwnd, int hdc);
12C 将控件内容保存为图片 - yellowriver - 天道酬勤 玩物丧志        public const int SRCCOPY = 13369376;
13C 将控件内容保存为图片 - yellowriver - 天道酬勤 玩物丧志
14C 将控件内容保存为图片 - yellowriver - 天道酬勤 玩物丧志    }

      借用这个辅助类生成控件的图形:

 1C 将控件内容保存为图片 - yellowriver - 天道酬勤 玩物丧志/// <summary>
 2C 将控件内容保存为图片 - yellowriver - 天道酬勤 玩物丧志        /// 绘制整个控件位BitMap
 3C 将控件内容保存为图片 - yellowriver - 天道酬勤 玩物丧志        /// </summary>
 4C 将控件内容保存为图片 - yellowriver - 天道酬勤 玩物丧志        /// <param name="Control">要绘制的控件</param>
 5C 将控件内容保存为图片 - yellowriver - 天道酬勤 玩物丧志        /// <returns></returns>

 6C 将控件内容保存为图片 - yellowriver - 天道酬勤 玩物丧志        public static Bitmap CreateBitmap(Control Control)
 7C 将控件内容保存为图片 - yellowriver - 天道酬勤 玩物丧志        {
 8C 将控件内容保存为图片 - yellowriver - 天道酬勤 玩物丧志            Graphics gDest;
 9C 将控件内容保存为图片 - yellowriver - 天道酬勤 玩物丧志            IntPtr hdcDest;
10C 将控件内容保存为图片 - yellowriver - 天道酬勤 玩物丧志            int hdcSrc;
11C 将控件内容保存为图片 - yellowriver - 天道酬勤 玩物丧志            int hWnd = Control.Handle.ToInt32();
12C 将控件内容保存为图片 - yellowriver - 天道酬勤 玩物丧志            Bitmap BmpDrawed = new Bitmap(Control.Width, Control.Height);
13C 将控件内容保存为图片 - yellowriver - 天道酬勤 玩物丧志            gDest = Graphics.FromImage(BmpDrawed);
14C 将控件内容保存为图片 - yellowriver - 天道酬勤 玩物丧志            hdcSrc = Win32.GetWindowDC(hWnd);
15C 将控件内容保存为图片 - yellowriver - 天道酬勤 玩物丧志            hdcDest = gDest.GetHdc();
16C 将控件内容保存为图片 - yellowriver - 天道酬勤 玩物丧志            Win32.BitBlt(hdcDest.ToInt32(), 0, 0, Control.Width, Control.Height, hdcSrc, 0, 0, Win32.SRCCOPY);
17C 将控件内容保存为图片 - yellowriver - 天道酬勤 玩物丧志            gDest.ReleaseHdc(hdcDest);
18C 将控件内容保存为图片 - yellowriver - 天道酬勤 玩物丧志            Win32.ReleaseDC(hWnd, hdcSrc);
19C 将控件内容保存为图片 - yellowriver - 天道酬勤 玩物丧志            return BmpDrawed;
20C 将控件内容保存为图片 - yellowriver - 天道酬勤 玩物丧志        }


关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

网站客服QQ:2881952447     

copyright@ 2020-2024  renrendoc.com 人人文库版权所有   联系电话:400-852-1180

备案号:蜀ICP备2022000484号-2       经营许可证: 川B2-20220663       公网安备川公网安备: 51019002004831号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知人人文库网,我们立即给予删除!