문제

Windows 확대 API를 사용하여 .NET에서 돋보기 앱을 만들려고합니다. 실제로 배율 수준 (기본값 100%)을 설정하는 것을 제외하고는 거의 모든 것이 작동했습니다. 문제는 그물의 어느 곳에서나 어떤 예제도 찾을 수 없으며 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에서이를 처리하는 방법입니다.

모든 도움은 대단히 감사하겠습니다.

도움이 되었습니까?

해결책

밈은 처음부터 매트릭스를 지우고 있습니다. .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 개의 수레가 필요합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top