WPF 截图

原创 2013年12月01日 21:50:20

最近按照老师的要求需要截取主窗口的图片保存在辅助窗口,废话不说,查看网上的相关资料和MSDN有如下收获,截图如下,


我的代码还有其他功能,这个截图只是个其中一个很小的部分,我就不贴demo献丑,但是我吧主要的函数和类贴出来,朋友们可以把这copy过去就没有问题了:

1.WPF本身是没有截屏函数的,我们得借助WinForm(当然肯定有其他办法,不过本人觉得这应该是最快速的办法)

首先通过截屏WinForm的截屏函数把你的bitmap保存下来:

  public  System.Drawing.Bitmap GetScreenSnapshot()
        {
            //Rectangle rc = SystemInformation.VirtualScreen;


            var bitmap = new System.Drawing.Bitmap((int)canvas1.ActualWidth, (int)canvas1.ActualHeight,System.Drawing.Imaging.PixelFormat.Format32bppArgb);
            double y=this.Top + 30 + toolbarTray1.ActualHeight;
            double x=this.Left+8;


            using (System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap))
            {
                g.CopyFromScreen((int)x, (int)y, 0, 0, new System.Drawing.Size((int)canvas1.ActualWidth, (int)canvas1.ActualHeight), System.Drawing.CopyPixelOperation.SourceCopy);
            }
            return bitmap;
        }

2.因为我们用的是WPF,所以你得上面保存下来的bitmap把他加载到WPF的Image中肯定出错,所以我们就必须得吧这个转化到WPF中使用的

废话不多说代码如下:(应为 Imaging.CreateBitmapSourceFromHBitmap为静态方法,不懂MSDN去)

 public static class btMapSource
    {
        public static BitmapSource ToBitmapSource(this System.Drawing.Bitmap bmp)
        {
            BitmapSource returnSource;


            try
            {
                returnSource = Imaging.CreateBitmapSourceFromHBitmap(bmp.GetHbitmap(), IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions());
            }
            catch
            {
                returnSource = null;
            }


            return returnSource;


        }
    }

3.我也不是一下就得到的,得感谢这个:http://www.cnblogs.com/zhouyinhui/archive/2010/08/20/1804762.html

但是我要的就是一个简单截屏的功能,所以只用到了一部分,希望一起进步!


版权声明:本文为博主原创文章,未经博主允许不得转载。

WPF C#截图功能 仿qq截图

先上效果图 源码下载地址:http://download.csdn.net/detail/candyvoice/9788099 描述:启动程序,点击窗口button,开始截...
  • candyvoice
  • candyvoice
  • 2017年03月21日 10:32
  • 1383

C#WPF制作仿QQ截图工具

本文是讲述使用C# WPF制作仿QQ截图工具的方法。 1. 注册快捷键 QQ的截图工具,当我们按下Ctrl + Alt + A键的时候就可以激活截图程序。 首先第一步就是要注册快捷键。这里需要引用到“...
  • xiahn1a
  • xiahn1a
  • 2015年01月09日 21:07
  • 2663

C#中仿QQ截图

欢迎大家提出意见,一起讨论! 转载请标明是引用于 http://blog.csdn.net/chenyujing1234 代码(VS2008): http://www.rayfile.com/z...
  • chenyujing1234
  • chenyujing1234
  • 2012年05月06日 22:44
  • 2260

仿QQ截图(WPF)

  • 2015年05月04日 09:29
  • 500KB
  • 下载

C#(WPF)中使用WinAPI函数进行截屏

在C#中,没有关于截屏的相关函数,这就需要使用Win32 API函数在C#代码中完成截屏。 一、基础知识介绍: gdi32.dll、user32.dll 二、编码实现...
  • wangshubo1989
  • wangshubo1989
  • 2015年08月05日 10:00
  • 3069

WPF仿QQ截图控件(完整版)

  • 2010年10月30日 10:29
  • 452KB
  • 下载

WPF 截图,仿照qq截图功能

  • 2017年03月21日 10:19
  • 230KB
  • 下载

c# wpf 利用截屏键实现截屏功能

最近做一个wpf程序需要截图功能,查找资料费了一些曲折,跟大家分享一下。...
  • Japhics
  • Japhics
  • 2016年08月01日 22:12
  • 1497

wpf做的类似QQ截图的小程序

  • 2011年05月11日 21:54
  • 178KB
  • 下载

分享WPF实现屏幕截图程序详解

分享WPF实现屏幕截图程序详解时间:2010-8-21 14:42:46 来源:www.cnblogs.com 作者:this.Study(DateTime.Now) --这里下载DEMO程序试试效果...
  • liuyuehui110
  • liuyuehui110
  • 2011年01月08日 01:19
  • 6394
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WPF 截图
举报原因:
原因补充:

(最多只允许输入30个字)