获取WPF窗口标题栏高度

1、直接调用参数。

SystemParameters.WindowCaptionHeight

此值是系统标题栏的高度,只在窗口最大化时准确,Normal状态标题栏比这高。

2、累加计算

SystemParameters.WindowCaptionHeight+SystemParameters.WindowResizeBorderThickness.Left + SystemParameters.WindowNonClientFrameThickness.Left

实测可计算Normal状态标题栏高度,还有类似的调用系统参数的计算方法。此方法本人无法准确理解参数含义,不能放心使用。

3、间接计算

        private double GetCaptionHeight()
        {
            // 通过计算窗口顶部Y值与窗口内根元素Grid的Y值差来获取标题栏实际高度。
            var captionTop = this.Top;   // 窗口normal状态顶部坐标
            if (this.WindowState == WindowState.Maximized)
            {
                // 窗口Maximized状态下,this.Top依然是normal状态下的值,实际设为0。
                // 注意:主屏幕最大化时顶部坐标为0,副屏幕未必是,需要特别计算。
                captionTop = 0;
            }
            // 标题栏底部坐标为根元素Grid(或别的)的顶部坐标
            // 通过PointFromScreen计算屏幕原点相对Grid原点的位置。
            // 注意:不能用PointToScreen,这个函数是把屏幕当参照系,但不计算屏幕缩放。
            var captionBottom = -(
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值