資源簡(jiǎn)介
使用C#Hook實(shí)現(xiàn)的屏幕放大鏡,可以實(shí)現(xiàn)實(shí)時(shí)放大,附有源碼

代碼片段和文件信息
/*******************************************************************
?*?聲明
?*?
?*?本示例代碼僅用于學(xué)習(xí)交流。
?*?拒絕在未經(jīng)過(guò)本人許可的情況下在任何商業(yè)性出版物或商業(yè)性網(wǎng)站上使用。
?*?
?*????????????????????????????????????????????????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
///?
///?功能說(shuō)明:
///?簡(jiǎn)單實(shí)現(xiàn)了屏幕圖像的放大顯示。采樣點(diǎn)為鼠標(biāo)點(diǎn)(-25,-25)-(25,25),放大2倍顯示。
///?
///?已知問(wèn)題:
///?1。不支持視頻截取
///?2。部分ToolTip提示無(wú)法顯示
///?3。可能會(huì)造成背景窗口部分顯示失效。
///?4。SKHook類中,對(duì)于鍵盤事件處理,存在不足。
///?
///?
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?);
///?
///?屏幕捕獲點(diǎn)X坐標(biāo)
///?
private?int?m_CaptureX?=?0;
///?
///?屏幕捕獲點(diǎn)Y坐標(biāo)
///?
private?int?m_CaptureY?=?0;
///?
///?鎖定對(duì)象用于加鎖
///?
private?object?m_LockObj?=?new?object();
///?
///?鉤子管理實(shí)例
///?
private?SKHook?m_HookMain?=?new?SKHook();
#endregion?私有變量
#region?私有方法
///?
///?手動(dòng)釋放資源
///?
private?void?CustomDispose()
{
this.m_ScreenCapture.Dispose();
}
///?
/// 使用鼠標(biāo)位置設(shè)置捕獲位置同時(shí)進(jìn)行位圖捕獲及設(shè)置窗體顯示位置
///?
///?
///?
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();
}
///?
///?獲取合理的窗體顯示位置
///?
///?
///?<
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件???????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個(gè)文件信息
評(píng)論
共有 條評(píng)論