سؤال

كيف أرسم نص مقطوع مع ATSUI ؟؟ لدي تطبيق قديم يستخدم QuickDraw API. ويستخدم وظائف stringwidth ، الجثث والرابطة. يمكنني استبدال stringwidth و markstring مع AtsumeAsuretextimage Atsui و Atsudrawtext. ومع ذلك ، لم أتمكن من إيجاد طريقة لاقتطاع سلسلة بحيث تناسب المستقيم.

لقد استخدمت الكوارتز مع Quickdraw قبل اختيار ATSUI. لا توفر الكوارتز أي وظائف لتقدير حجم (بالبكسل) من النص المرسوم.

CGContextSelectFont(cgContext,
    "Geneva", 12.0, kCGEncodingMacRoman);
CGContextSetTextMatrix(cgContext,
    CGAffineTransformMake(1.0,0.0, 0.0,
    -1.0, 0.0, 0.0));
CGContextShowTextAtPoint(cgContext,
    inPoint.h, inPoint.v + 12.00, (const
    char*)&(inString[1]), inString[0]);

هل هناك أي وظيفة في ATSUI تقوم باقتطاع السلسلة مثل التثبيت ... ؟؟ إن لم يكن كيف أرسم سلسلة مقطوعة إلى المستقيم.

شكرا ، أبهيناي.

هل كانت مفيدة؟

المحلول

تريد استخدامها HIThemeGetTextDimensions لقياس السلسلة مع سياسة الاقتطاع. سوف يعطيك عرض المستطيل والارتفاع وخط الأساس ؛ يمكنك عمل CGRECT بهذا العرض والارتفاع وتعيين أصله إلى أي مكان تريد فيه النص.

بشكل مثير للدهشة ، يبدو أن هذه الوظيفة لا تزال مدعومة في 64 بت ، على الرغم من أنها لم يتم توثيقها مطلقًا (لم يكن هناك أي وثائق مرجعية على الإطلاق لـ Hitheme). ابحث عنه في الرؤوس للحصول على التفاصيل.

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