- 积分
- 446
- 在线时间
- 1708 小时
- 主题
- 32
- 注册时间
- 2013-6-8
- 帖子
- 301
- 最后登录
- 2024-7-15
- 帖子
- 301
- 软币
- 8616
- 在线时间
- 1708 小时
- 注册时间
- 2013-6-8
|
本帖最后由 hyblusea 于 2013-12-14 14:59 编辑
先上图, 效果非常小清新:
主要核心代码:
- //获取桌面图像
- private Bitmap GetScreen() {
- Bitmap bmp = new Bitmap(Screen.PrimaryScreen.Bounds.Width,
- Screen.PrimaryScreen.Bounds.Height);
- if (this.isCaptureCursor) { //是否捕获鼠标
- //如果直接将捕获当的鼠标画在bmp上 光标不会反色 指针边框也很浓 也就是说
- //尽管bmp上绘制了图像 绘制鼠标的时候还是以黑色作为鼠标的背景 然后在将混合好的鼠标绘制到图像 会很别扭
- //所以 干脆直接在桌面把鼠标绘制出来再截取桌面
- using (Graphics g = Graphics.FromHwnd(IntPtr.Zero)) { //传入0默认就是桌面 Win32.GetDesktopWindow()也可以
- Win32.PCURSORINFO pci;
- pci.cbSize = System.Runtime.InteropServices.Marshal.SizeOf(typeof(Win32.PCURSORINFO));
- Win32.GetCursorInfo(out pci);
- if (pci.hCursor != IntPtr.Zero) {
- Cursor cur = new Cursor(pci.hCursor);
- g.CopyFromScreen(0, 0, 0, 0, bmp.Size); //在桌面绘制鼠标前 先在桌面绘制一下当前的桌面图像
- //如果不绘制当前桌面 那么cur.Draw的时候会是用历史桌面的快照 进行鼠标的混合 那么到时候混出现底色(测试中就是这样的)
- cur.Draw(g, new Rectangle((Point)((Size)MousePosition - (Size)cur.HotSpot), cur.Size));
- }
- }
- }
- //做完以上操作 才开始捕获桌面图像
- using (Graphics g = Graphics.FromImage(bmp)) {
- g.CopyFromScreen(0, 0, 0, 0, bmp.Size);
- }
- return bmp;
- }
复制代码
源码链接: http://pan.baidu.com/s/128Woi
提取密码: pa1k
喜欢就赞一个,谢谢
|
评分
-
查看全部评分
|