gpt4 book ai didi

.net - WPF 窗口位置属性 Left、Top、Height 和 Width 是否实际上是双倍的?

转载 作者:可可西里 更新时间:2023-11-01 11:14:37 25 4
gpt4 key购买 nike

位置属性Left , Top , HeightWidth WPF 窗口的是 double 。然而当interacting with windows messages喜欢WM_MOVINGWM_MOVE , 必须将 double 转换为 integral type .

这对我来说似乎没问题,因为所有 Windows 通知似乎都在其所有位置参数中使用整数类型,我想这些消息与 WPF 位置属性密切相关。

所以问题是,我的这个假设是否正确,或者 Windows 通知实际上是双倍的,最终会有一些奇怪的副作用吗?

最佳答案

在 WPF 窗口中,这些属性实际上映射到窗口的位置,正如您所指出的(在 Windows 中)最终将映射到一个整数值。

但是,它们被定义为 double 值,这很好,因为它们可以清晰地映射到(并继承自)其他 FrameworkElement 属性,即:FrameworkElement.Width .窗口中的元素确实利用了 double ,因为它们被设计为独立于分辨率并允许通过变换等进行任意缩放。

要生成这些整数,框架必须使 Window 不是 FrameworkElement,或者为它们定义单独的属性,忽略 FrameworkElement 的属性。任何一种选择都会引起混淆,并且比保留这些双重值更糟糕。此外,要意识到 future 的实现可能会使用亚像素定位 - 虽然 Windows API 现在不支持这一点,但理论上可能(虽然不太可能)在未来可以实现。

关于.net - WPF 窗口位置属性 Left、Top、Height 和 Width 是否实际上是双倍的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4937003/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com