资源简介
使用C#Hook实现的屏幕放大镜,可以实现实时放大,附有源码
代码片段和文件信息
/*******************************************************************
* 声明
*
* 本示例代码仅用于学习交流。
* 拒绝在未经过本人许可的情况下在任何商业性出版物或商业性网站上使用。
*
* SHARKOO 2006.3.24
*
* Mail: sharkoo@msn.com
* Blog: http://sharkoo.cnblogs.com/
*
*******************************************************************/
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;
namespace ScreenMagnifier
{
///
/// 屏幕放大示例 V1.0
///
/// 功能说明:
/// 简单实现了屏幕图像的放大显示。采样点为鼠标点(-25,-25)-(25,25),放大2倍显示。
///
/// 已知问题:
/// 1。不支持视频截取
/// 2。部分ToolTip提示无法显示
/// 3。可能会造成背景窗口部分显示失效。
/// 4。SKHook类中,对于键盘事件处理,存在不足。
///
///
public partial class FrmMain : Form
{
#region 私有常量
private readonly int m_ScreenWidth = 1024;
private readonly int m_ScreenHeight = 768;
#endregion 私有常量
#region 私有变量
///
/// 用于存在屏幕捕获位图
///
private Bitmap m_ScreenCapture = new Bitmap( 50 50 );
///
/// 屏幕捕获点X坐标
///
private int m_CaptureX = 0;
///
/// 屏幕捕获点Y坐标
///
private int m_CaptureY = 0;
///
/// 锁定对象用于加锁
///
private object m_LockObj = new object();
///
/// 钩子管理实例
///
private SKHook m_HookMain = new SKHook();
#endregion 私有变量
#region 私有方法
///
/// 手动释放资源
///
private void CustomDispose()
{
this.m_ScreenCapture.Dispose();
}
///
/// 使用鼠标位置设置捕获位置同时进行位图捕获及设置窗体显示位置
///
///
///
private void SetCaptureXY( int mousex int mousey )
{
this.GetLoactionOfCapture( ref mousex ref mousey );
if ( this.m_CaptureX == mousex && this.m_CaptureY == mousey )
return;
lock ( this.m_LockObj )
{
this.m_CaptureX = mousex;
this.m_CaptureY = mousey;
}
this.GetLoactionOfForm( ref mousex ref mousey );
Win32API.SetWindowPos( this.Handle -1 mousex mousey 0 0
( int )SetWindowPosFlags.SWP_ASYNCWINDOWPOS | ( int )SetWindowPosFlags.SWP_NOSIZE );
this.CreateScreenCapture();
}
///
/// 捕获屏幕图像到位图
///
private void CreateScreenCapture()
{
lock ( this.m_LockObj )
{
using ( Graphics g = Graphics.FromImage( this.m_ScreenCapture ) )
{
// g.Clear( Color.White );
g.CopyFromScreen( this.m_CaptureX this.m_CaptureY 0 0 new Size( 50 50 ) );
}
}
if ( this.InvokeRequired )
{
VoidCallback InvalidateCallback = new VoidCallback( this.Invalidate );
this.Invoke( InvalidateCallback null );
}
else
this.Invalidate();
}
///
/// 获取合理的窗体显示位置
///
///
/// <
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 6943 2006-03-24 15:15 ScreenMagnifier0325\FrmMain.cs
文件 403 2006-03-24 09:17 ScreenMagnifier0325\Program.cs
文件 5273 2006-03-24 09:17 ScreenMagnifier0325\SKPublic.cs
文件 3648 2006-03-24 11:49 ScreenMagnifier0325\ScreenMagnifier.csproj
文件 168 2006-03-24 09:17 ScreenMagnifier0325\ScreenMagnifier.csproj.user
文件 918 2006-03-24 09:17 ScreenMagnifier0325\ScreenMagnifier.sln
..A..H. 20992 2006-03-24 15:15 ScreenMagnifier0325\ScreenMagnifier.suo
文件 127438 2006-03-24 09:17 ScreenMagnifier0325\Search.ico
文件 668 2006-03-24 15:14 ScreenMagnifier0325\obj\ScreenMagnifier.csproj.FileList.txt
目录 0 2006-03-24 09:18 ScreenMagnifier0325\obj\Release\TempPE
目录 0 2006-03-24 09:18 ScreenMagnifier0325\obj\Release\Refactor
文件 128004 2006-03-24 12:14 ScreenMagnifier0325\obj\Release\ScreenMagnifier.FrmMain.resources
文件 180 2006-03-24 12:14 ScreenMagnifier0325\obj\Release\ScreenMagnifier.Properties.Resources.resources
文件 844 2006-03-24 12:14 ScreenMagnifier0325\obj\Release\ScreenMagnifier.csproj.GenerateResource.Cache
文件 32256 2006-03-24 15:14 ScreenMagnifier0325\obj\Release\ScreenMagnifier.pdb
文件 282624 2006-03-24 15:14 ScreenMagnifier0325\obj\Release\ScreenMagnifier.exe
目录 0 2006-03-24 09:18 ScreenMagnifier0325\obj\Release
文件 844 2006-03-24 09:17 ScreenMagnifier0325\obj\Debug\ScreenMagnifier.csproj.GenerateResource.Cache
文件 282624 2006-03-24 09:17 ScreenMagnifier0325\obj\Debug\ScreenMagnifier.exe
文件 128004 2006-03-24 09:17 ScreenMagnifier0325\obj\Debug\ScreenMagnifier.FrmMain.resources
文件 180 2006-03-24 09:17 ScreenMagnifier0325\obj\Debug\ScreenMagnifier.Properties.Resources.resources
文件 32256 2006-03-24 09:17 ScreenMagnifier0325\obj\Debug\ScreenMagnifier.pdb
目录 0 2006-03-24 09:18 ScreenMagnifier0325\obj\Debug\TempPE
目录 0 2006-03-24 09:18 ScreenMagnifier0325\obj\Debug\Refactor
目录 0 2006-03-24 09:18 ScreenMagnifier0325\obj\Debug
目录 0 2006-03-24 09:18 ScreenMagnifier0325\obj
文件 1216 2006-03-24 09:17 ScreenMagnifier0325\Properties\AssemblyInfo.cs
文件 2553 2006-03-24 09:17 ScreenMagnifier0325\Properties\Resources.Designer.cs
文件 5612 2006-03-24 09:17 ScreenMagnifier0325\Properties\Resources.resx
文件 1030 2006-03-24 09:17 ScreenMagnifier0325\Properties\Settings.Designer.cs
............此处省略10个文件信息
评论
共有 条评论