WPF窗口贴边隐藏(类似QQ)

本文介绍了一种使用MousePosition类实现窗口在鼠标移动时进行贴边隐藏的效果,通过设置窗口顶部位置来达到隐藏目的。当鼠标进入窗口时,窗口会保持在隐藏状态,直到鼠标离开窗口且移动到特定位置,窗口才会重新显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    public partial class MainWindow : Window
    {
        #region 窗口贴边隐藏用的变量
        //鼠标坐标当前位置
        private MousePosition p = new MousePosition();
        MousePosition.POINT point;

        //窗口贴边隐藏用的变量
        private bool isHidd = false;
        public double CurrentTop { get; set; }
        #endregion


        //构造函数
        public MainWindow()
        {
            InitializeComponent();
            p.MouseMove(out point);
        }

        //鼠标进入窗口
        private void MainWindow_OnMouseMove(object sender, MouseEventArgs e)
        {
            if (!isHidd) return;
            while (CurrentTop < 0)
            {
                CurrentTop += 1;
                this.Top = CurrentTop;
            }
            isHidd = false;
        }
        //鼠标离开窗口
        private void MainWidow_OnMouseLeave(object sender, MouseEventArgs e)
        {
            if (isHidd) return;
            if (point.Y<=21)
            {
                CurrentTop = this.Top;
                while (CurrentTop>=-this.ActualHeight+8)
                {
                    CurrentTop += -1;
                    this.Top = CurrentTop;
                }
                isHidd = true;
            }
           
        }

        private void MainWidow_OnMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            this.DragMove();
            p.MouseMove(out point);
        }

    }

 

定义了一个MousePosition类。

  代码如下:

    public class MousePosition
    {
        [DllImport("User32")]
        public static extern bool GetCursorPos(out POINT pt);
        public struct POINT
        {
            public int X;
            public int Y;
            public POINT(int x, int y)
            {
                this.X = x;
                this.Y = y;
            }
        }
        //鼠标移动并计算坐标
        public void MouseMove(out POINT MousePoint)
        {
            GetCursorPos(out MousePoint);
        }
    }

前台可以自己设计。

转载于:https://www.cnblogs.com/renkf/p/4040713.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值