Winform 屏幕放大镜

8dba2922c58bac2c9d86f40026a63df1.png

前言

c347ac558b1d69f9352410eb33fbfa12.png

e64a9ce7b5619c8c7d85b787c367e499.png

    顾名思义,此篇文章就是实现针对屏幕上的局部位置进行放大显示的功能,一般情况下在屏幕取色器、商品图片详情展示等工具上使用的比较多。

9a3977990b22e2bee37503c05569a4c3.png

05fa8841825fba214c882db36d6eed9e.gif

315531ed0da765e1b6d6785f164bcfaa.jpeg

开发环境:.NET Framework版本:4.8

开发工具:Visual Studio 2022

d59747cd9ed52c415949e556a1b1f258.png

实现步骤

bb01a8f93cc710fb379185c6b7824e15.png

  1. 首先在窗体上放一个PictureBox控件和Timer控件

  2. 在PictureBox控件中绘制两条交错的线,用来针对坐标定位

private void pictureBox1_Paint(object sender, PaintEventArgs e)
        {
            //绘制横线
            e.Graphics.DrawLine(cursorPen, 0, pictureBox1.Height / 2, pictureBox1.Width, pictureBox1.Height / 2);
            //绘制竖线
            e.Graphics.DrawLine(cursorPen, pictureBox1.Width / 2, 0, pictureBox1.Width / 2, pictureBox1.Height);


        }
  1. 在Timer的触发事件(触发频率为100毫秒)中,实现对屏幕图像的捕捉以及鼠标的定位,并在PictureBox中放大显示

private void timer1_Tick(object sender, EventArgs e)
        {
            //放大倍数
            int n = 4;
            //定义图片为控件大小的1/N,由于SizeMode属性,所以显示会被放大N倍
            Bitmap bitmap = new Bitmap(pictureBox1.Width / n, pictureBox1.Height / n);
            using (Graphics g = Graphics.FromImage(bitmap))
            {
                //绘制从当前鼠标位置减去图片一半的屏幕大小到bitmap中
                g.CopyFromScreen(new Point(Cursor.Position.X - bitmap.Width / 2, Cursor.Position.Y - bitmap.Height / 2), new Point(0, 0), bitmap.Size);
            }
            pictureBox1.Image = bitmap;
        }

4. 代码实现比较简单,以下显示效果可以在程序外使用,只是为了方便展示所以坐标定位在了程序内。

9dfd3bc513b3dde863076e9f69df93d3.png

实现效果

179536e0d4e1187ca2b2788efe26eccf.png

e82117d02130a9100431eebcb4bf5dcd.gif

-

技术群:添加小编微信并备注进群

小编微信:mm1552923   

公众号:dotNet编程大全    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值