سؤال

CGFloat* colors = CGColorGetComponents(hsbaColor.CGColor);

هل هذا يعود تعويم، أو صفيف من العوامات؟ يبدو أن العلامة النجمية هي اختصار لإنشاء صفيف. هل هذا صحيح؟

عندما أسمي هذه الوظيفة على خاصية CGColor لكائن HSB Uicolor هل تحويل القيم إلى RGB؟

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

المحلول

نعم، إرجاع مجموعة من CGFloats. وبعد على وجه التحديد، تقوم بإرجاع "مجموعة من قيم الشدة لمكونات الألوان (بما في ذلك ألفا) المرتبطة باللون المحدد."

تعتمد مكونات الألوان التي تم إرجاعها على مساحة اللون التي مرت CGColorRef الاستخدامات.

مزيد من المعلومات يمكن العثور عليها في وثائق CGColor..

نصائح أخرى

CGFloat* colors = CGColorGetComponents(hsbaColor.CGColor);

هل هذا يعود تعويم، أو صفيف من العوامات؟ يبدو أن العلامة النجمية هي اختصار لإنشاء صفيف. هل هذا صحيح؟

نوعا ما.

CGFloat *colors يعلن متغير يحمل مؤشرا ل CGFLoوات واحد على الأقل. CGColorGetComponents إرجاع مؤشر إلى العديد من cgfloats، واحدة تلو الأخرى على صفيف C الأخرى. تأخذ هذا المؤشر وتعيينه (ضع المؤشر في) colors عامل.

إعلان المتغير لا يزيد المصفوفة. في الواقع، لا يفعل CGColorGetComponents. وبعد مهما تم إنشاؤه كائن CGColor بإنشاء الصفيف وتخزينه داخل الكائن؛ CGColorGetComponents يتيح لك أن يكون لديك المؤشر إلى هذا التخزين.

إعلان CGFloat *colors يخلق المتغير فقط مكان - المتغير - لتخزين مؤشر واحد أو أكثر من cgfloats. الشيء الموجود في المتغير هو المؤشر، والشيء في هذا المؤشر هو الصفيف.

إذا كان هذا لا يزال غير واضح، انظر كل ما تحتاج لمعرفته حول المؤشرات في ج.

من تفاحة:

تقوم بإرجاع قيم مكونات الألوان (بما في ذلك Alpha) المرتبطة لون الكوارتز. مجموعة من قيم الشدة لمكونات الألوان (بما في ذلك ألفا) المرتبطة باللون المحدد. حجم الصفيف هو أكثر من عدد مكونات المساحة الملونة للون.

للحصول على مكونات RGB التي أستخدمها:

// Get UIColor's RGB normalized components (0..1)
CGFloat red, green, blue, alpha;
[color getRed:&red green:&green blue:&blue alpha:&alpha];

// Convert RGB components to 8-bit values (0..255)
int r = (int)(red * 255.0);
int g = (int)(green * 255.0);
int b = (int)(blue * 255.0);

إليك مثال على كيفية تحويل CGColorref بشكل صحيح myColorRef إلى nscolor. myNSColor:

NSColorSpace *cp = [[NSColorSpace alloc] initWithCGColorSpace:CGColorGetColorSpace(myColorRef)];
const CGFloat *components = CGColorGetComponents(myColorRef);
size_t componentCount = CGColorGetNumberOfComponents(myColorRef);
NSColor* myNSColor = [NSColor colorWithColorSpace:cp components:components count:componentCount];
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top