首页 > 其他分享 >WPF 什么时候 VisualTreeHelper.GetDescendantBounds 将返回无穷大

WPF 什么时候 VisualTreeHelper.GetDescendantBounds 将返回无穷大

时间:2024-09-12 21:03:34浏览次数:1  
标签:origin 无穷大 git GetDescendantBounds 代码 WPF VisualTreeHelper

本文将和大家介绍在什么情况下 WPF 将会在调用 VisualTreeHelper.GetDescendantBounds 方法时,返回一个无穷大的范围尺寸

在 WPF 的容器控件的里层元素的 RenderTransform 包含 NaN 将会导致对上层容器调用 VisualTreeHelper.GetDescendantBounds 返回无穷大

返回的矩形范围是 -∞,-∞,∞,∞ 的正负无穷大

复现代码如下

        <Grid x:Name="Grid">
            <Border x:Name="Border">
                <Grid>
                    <Grid.RenderTransform>
                        <TranslateTransform X="NaN"></TranslateTransform>
                    </Grid.RenderTransform>
                </Grid>
            </Border>
        </Grid>

此时对以上代码的 Grid 或 Border 控件调用 VisualTreeHelper.GetDescendantBounds 返回的 Rect 就是一个包含正负无穷大的范围,如以下代码

    public MainWindow()
    {
        InitializeComponent();

        Loaded += MainWindow_Loaded;
    }

    private void MainWindow_Loaded(object sender, RoutedEventArgs e)
    {
        var rect = VisualTreeHelper.GetDescendantBounds(Grid);
    }

以上代码里面存在 RenderTransform 的 TranslateTransform 的 X 或 Y 属性包含了 NaN 值,从逻辑上讲就是具备无穷大的描述范围

本文以上的代码放在githubgitee 欢迎访问

可以通过如下方式获取本文的源代码,先创建一个空文件夹,接着使用命令行 cd 命令进入此空文件夹,在命令行里面输入以下代码,即可获取到本文的代码

git init
git remote add origin https://gitee.com/lindexi/lindexi_gd.git
git pull origin b50873dca1d5f4d118df253f1e7feb326ec1f87e

以上使用的是 gitee 的源,如果 gitee 不能访问,请替换为 github 的源。请在命令行继续输入以下代码

git remote remove origin
git remote add origin https://github.com/lindexi/lindexi_gd.git
git pull origin b50873dca1d5f4d118df253f1e7feb326ec1f87e

获取代码之后,进入 BeewhearfulidiLodiwena 文件夹

标签:origin,无穷大,git,GetDescendantBounds,代码,WPF,VisualTreeHelper
From: https://www.cnblogs.com/lindexi/p/17855205.html

相关文章

  • WPF 已知问题 开启 WM_Pointer 消息之后 获取副屏触摸数据坐标偏移
    本文记录WPF触摸的一个已知问题,仅在开启WM_Pointer消息之后,将应用程序运行在包含多个屏幕的带触摸屏的设备上,如此时在非主屏幕的触摸屏上进行触摸,使用GetStylusPoint或GetIntermediateTouchPoints方法获取触摸点时,将会发现所获取的触摸点的坐标是偏的,偏的坐标差值刚好是整......
  • WPF 已知问题 包含 NaN 的 Geometry 几何可能导致渲染层抛出 UCEERR_RENDERTHREADFAIL
    本文记录一个WPF已知问题,当传入到渲染的Geometry几何里面包含了NaN数值,将可能让应用程序收到从渲染层抛上来的UCEERR_RENDERTHREADFAILURE异常,且此异常缺乏必要信息,比较难定位到具体错误逻辑此问题是小伙伴报告给我的,详细请看https://github.com/dotnet/wpf/issues/7421......
  • WPF 尝试使用 WinML 做一个简单的手写数字识别应用
    最近我看了微软的AI训练营之后,似乎有点了解WindowsMachineLearning和DirectML的概念,于是我尝试实践一下,用WPF写一个简单的触摸手写输入的画板,再使用大佬训练好的mnist.onnx模型,对接WinML实现一个简单的手写数字识别应用本文属于WinML的入门级博客,我将尝试一步步......
  • WPF 的 WriteableBitmap 在 Intel 11 代 Iris Xe Graphics 核显设备上停止渲染
    在Intel11代锐炬Intel®Iris®XeGraphics核显设备上,如果此设备使用旧版本驱动,则可能导致WPF的WriteableBitmap停止渲染。此问题和WPF无关,此问题是Intel的bug且最新驱动版本已修复官方问题记录地址:https://www.intel.cn/content/www/cn/zh/support/articles/000......
  • WPF 的 Viewport3D 等 3D 模块在带 Intel UHD 770 设备上抛出渲染异常
    在带IntelUHD770的设备上,使用旧版本驱动,即小于30.0.101.1660版本驱动,将会导致WPF的3D模块出现渲染异常。此问题和WPF无关,此问题是Intel的bug且最新驱动版本已修复官方问题记录地址:https://community.intel.com/t5/Graphics/Crash-with-UHD-770-in-WPF-applicatio......
  • 【转】[C#][WPF] 避免窗口最大化时遮盖任务栏
    转自:https://learn.microsoft.com/zh-cn/previous-versions/msdn10/dd366102(v=MSDN.10)WPF窗口最大化时有个很不好的现象是:如果窗口的WindowStyle被直接或间接地设置为None后(比如很多情况下你会覆盖默认的窗体样式,即不采用Windows默认的边框和最大化最等按钮,来打造个性的窗......
  • WPF UNO 测试固定尺寸且水平和垂直对齐设置 Stretch 的元素在容器内的布局行为
    本文将告诉大家我对WPF的自定义布局容器和自定义控件进行的布局行为测试中的一个小点,即测试固定元素的尺寸的情况下或元素尺寸为有限尺寸的情况下,同步设置元素的水平和垂直对齐为Stretch来测试元素在容器内的布局行为,元素分别在容器给元素的布局尺寸大于元素的尺寸和小于元素......
  • Jenkins 编译 .NET 6 WPF
    最近公司需求要将产品编译自动化,干了那么多年客户端开发一直都是小作坊作业最近换了一个比较正规的互联网公司一切都需要标准化流程化了,自动化也必不可少!然后我就了解到了Jenkins这玩意,找了两天资料感觉还挺简单的写篇文章收录下。因为签名UKey只要windows驱动,所以我只能将环境......
  • WPF创建不规则窗体时WebBrowser控件不显示的问题
    最近有小伙伴需要在不规则窗体上放置WebBrowser控件,因为设置了WindowStyle="None"和AllowsTransparency="True"。导致WebBrowser控件不显示。 界面代码如下所示:1<Windowx:Class="WebBrowserDemo.MainWindow"3xmlns="http://schemas.microsoft.com/win......
  • wpf笔记
    容器:一、网格<Grid></Grid>附加属性:Grid.row(行)、Grid.Column(列)Margin(左上右下的间隙)基本属性(元素化的属性):行定义:<Grid.RowDefinitions/>附加属性:Height、Width(:*、auto数字)列定义:<Grid.ColumnSpanDefinitions/>附加属性:Height、Width(:*、auto数字)尺寸共享:<Grid......