NetAutoGUI.Windows/WindowsScreenshotController.cs
(开头部分) 4KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using NetAutoGUI.Internals;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Runtime.Versioning;
using System.Threading;
using System.Windows.Forms;
using Vanara.PInvoke;
namespace NetAutoGUI.Windows
{
[SupportedOSPlatform("windows")]
internal class WindowsScreenshotController : AbstractScreenshotController
{
public override BitmapData Screenshot(Rectangle? region = null, uint screenIndex = 0)
{
Screen screen = Screen.AllScreens[screenIndex];
if (region == null)
{
region = ScreenshotHelper.ToAutoRect(screen.Bounds);
}
using Bitmap bitmap = new Bitmap(region.Width, region.Height);
using Graphics g = Graphics.FromImage(bitmap);
g.CopyFromScreen(region.X, region.Y, 0, 0, new(region.Width, region.Height));
return ToBitmapData(bitmap);
}
private static BitmapData ToBitmapData(Bitmap bitmap)
{
using MemoryStream memSteam = new MemoryStream();
bitmap.Save(memSteam, ImageFormat.Bmp);
memSteam.Position = 0;
byte[] data = memSteam.ToArray();
return new BitmapData(data, bitmap.Width, bitmap.Height);
}
protected override BitmapData LoadImageFromFile(string imageFile)
{
using var image = Image.FromFile(imageFile);
using Bitmap bitmap = new Bitmap(image);
return ToBitmapData(bitmap);
}
private static PRECT ToPRECT(Rectangle r)
{
return new PRECT(r.X, r.Y, r.X + r.Width, r.Y + r.Height);
}
public override void Highlight(double waitSeconds = 0.5, params Rectangle[] rectangles)
{
HDC hDC_Desktop = User32.GetDC(HWND.NULL);
foreach (var rect in rectangles)
{
HBRUSH blueBrush = User32.GetSysColorBrush(SystemColorIndex.COLOR_ACTIVEBORDER);
User32.FillRect(hDC_Desktop, new RECT(rect.X, rect.Y, rect.X + rect.Width, rect.Y + rect.Height), blueBrush);
}
Thread.Sleep((int)(waitSeconds * 1000));
foreach (var rect in rectangles)
{
User32.InvalidateRect(HWND.NULL, ToPRECT(rect), true);
后面还有 59 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。