wpf 设置窗口最大化后其实际尺寸大于显示器尺寸

问题描述:wpf窗口按如下设置后发现其实际尺寸为1934*1094(我显示器分辨率1920*1080)

AllowsTransparency="True"

WindowStyle="None"

WindowState = "Maximized"

Background="Transparent"

应用场景:实现一个手机到PC的笔迹同步显示的功能.

实现思路:

1.利用ffmpeg获取PC机视频流推给手机,达到实时显示PC桌面目的;

2.把手机上画的笔迹坐标按视频流分辨率计算出相对坐标发送给PC。

3.PC在用相对坐标值*屏幕尺寸(1920*1080)计算出实际坐标点,利用InkCanvas画出;

遇到的问题:

发现手机的笔迹和PC投屏过来的笔迹不重合;排查了手机端获取的视频流尺寸没问题(1920*1080)其显示的实际尺寸是1280*720(是等比缩放没毛病)

那问题肯定是在PC端,果然发现wpf在设置为最大化显示、无边框且透明时其Left 和Top都不为0(我机器上都是 -8)窗口的实际尺寸是1934*1094

解决办法:按如下设置:

       WindowStartupLocation="CenterScreen"
        WindowState="Maximized"
        Topmost="True"
        BorderThickness="0"
        Left="0"
        Top="0"
        MaxWidth = "{Binding Source={x:Static SystemParameters.PrimaryScreenWidth}}"
        MaxHeight = "{Binding Source={x:Static SystemParameters.PrimaryScreenHeight}}"
        ResizeMode="NoResize"
        
        WindowStyle="None"
        Background="Transparent"
        AllowsTransparency="True"    

参考链接: https://stackoverflow.com/questions/2092782/borderless-window-application-takes-up-more-space-than-my-screen-resolution

总结:出现这个问题的关键在于这句AllowsTransparency="True" 设置后窗口的尺寸和位置就变了;

不知道微软为何会这么做,有知道的欢迎留言.

转载于:https://www.cnblogs.com/tiaf/p/8580165.html

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值