gpt4 book ai didi

c# - 将 System.Windows.Rect 转换为 System.Windows.Point

转载 作者:太空狗 更新时间:2023-10-29 23:53:43 25 4
gpt4 key购买 nike

我想在 C# 中转换此 C++ 代码:

RECT rcCurrent;
::GetWindowRect ( hwndChild, &rcCurrent );
::MapWindowPoints ( NULL, hWnd, reinterpret_cast<LPPOINT>(&rcCurrent), 2);

但是我不知道怎么转换:

reinterpret_cast<LPPOINT>(&rcCurrent)

如何将 System.Windows.Rect 转换为 System.Windows.Point ?

最佳答案

哇,这真是对 reinterpret_cast 的滥用!代码基本上是这样说的:取一个指向包含 4 个整数的内存部分的指针,并假装它实际上是一个指向包含 2 个整数的内存部分的指针。它假定左上角的点坐标首先存储在矩形内,并且两种类型都具有兼容的内存布局和字节对齐(一个非常合理的假设,但不能保证)。

在 C# 中最安全的做法是手动将所需的值从 Rect 复制到 Point 对象,例如

var point = new Point(rect.x, rect.y);

更新:

一个更易于维护的选项(感谢 Sven!):

var point = rect.Location;

关于c# - 将 System.Windows.Rect 转换为 System.Windows.Point,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9496411/

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