• 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" 设置后窗口的尺寸和位置就变了;

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

    没有困难创造困难也要上!
  • 相关阅读:
    关于php配置文件
    修改范围PHP_INI_SYSTEM与PHP_INI_ALL的区别
    mysql索引常见问题
    K-D TREE算法原理及实现
    Matlab K-means聚类
    Matlab 聚类分析
    Zbar 大图像分析
    Zbar -- 源码分析
    ZBar在Windows上的使用 -- ImageMagick and OpenCV
    Zbar算法流程介绍
  • 原文地址:https://www.cnblogs.com/tiaf/p/8580165.html
Copyright © 2020-2023  润新知