zoukankan      html  css  js  c++  java
  • 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" 设置后窗口的尺寸和位置就变了;

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

    没有困难创造困难也要上!
  • 相关阅读:
    HDU 1022 Train Problem I
    HDU 1702 ACboy needs your help again!
    HDU 1294 Rooted Trees Problem
    HDU 1027 Ignatius and the Princess II
    HDU 3398 String
    HDU 1709 The Balance
    HDU 2152 Fruit
    HDU 1398 Square Coins
    HDU 3571 N-dimensional Sphere
    HDU 2451 Simple Addition Expression
  • 原文地址:https://www.cnblogs.com/tiaf/p/8580165.html
Copyright © 2011-2022 走看看