gpt4 book ai didi

.net - Windows 放大 API、.NET 和矩阵

转载 作者:行者123 更新时间:2023-11-28 03:59:49 25 4
gpt4 key购买 nike

我正在尝试使用 Windows Magnification API 在 .NET 中创建放大镜应用程序.除了实际设置放大级别(默认为 100%)之外,我几乎已经完成了所有工作。问题是,我在 Internet 上的任何地方都找不到任何示例,而且 API 的所有文档都是 C++ 代码。这是我遇到问题的特定功能。

bool SetMagFactor(float magfactor)
{
MAGTRANSFORM matrix;
memset(&matrix, 0, sizeof(matrix));
matrix.v[0][0] = magfactor;
matrix.v[1][1] = magfactor;
matrix.v[2][2] = 1.0f;
return MagSetWindowTransform(hwndMag, &matrix);
}

MAGTRANSFORM结构定义如下:

typedef struct tagMAGTRANSFORM {
float v[3] [3];
} MAGTRANSFORM, *PMAGTRANSFORM;

其中最令人困惑的部分是 memset - 我不确定它的作用或它在 .NET 中的等价物是什么,但同样令人困惑的是多维数组/矩阵以及我如何也会在 .NET 中处理此问题。

我该怎么做?

最佳答案

memset 只是开始清除矩阵。您不需要在 .NET 中执行此操作。我怀疑在 C# 中定义结构的最简单方法是单独指定每个元素:

public struct MagTransform
{
readonly float m00;
readonly float m10;
readonly float m20;
readonly float m01;
readonly float m11;
readonly float m21;
readonly float m02;
readonly float m12;
readonly float m22;

public MagTransform(float magnificationFactor) : this()
{
m00 = magnificationFactor;
m11 = magnificationFactor;
m22 = 1.0f;
}
}

您可能还需要指定布局 - 恐怕我不太热衷于编码。

如您所见,我已根据示例代码假设了您想要的值。会有关于未使用值的警告,但没关系。

可以改用固定缓冲区和不安全的代码...但我想我可能会使用上面的代码。基本上你只需要 9 个花车。

关于.net - Windows 放大 API、.NET 和矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1426562/

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