سؤال

وأنا أحاول أن إنشاء التطبيق المكبر في صافي باستخدام API ويندوز التكبير. لقد حصلت حد كبير عمل كل شيء باستثناء وضع فعلا مستوى التكبير (الذي افتراضات إلى 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، ولكن ما هو الخلط أيضا هو مجموعة متعددة demensional / المصفوفة وكيف سيكون التعامل مع هذا في. 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 عوامات.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top