CGColor اور CGColorSpace: یہ کیا ہے، رنگوں کے ماڈل اور ان کا انتظام کیسے کریں

مصنف: IT Sectr اشاعت: 2026-07-21 مطالعے کا وقت: 9 منٹ

Core Graphics میں رنگوں کے ساتھ کام کرنا دو باہم مربوط ہستیوں کے گرد بنایا گیا ہے — CGColor اور CGColorSpace۔ CGColor اجزاء کے ساتھ ایک مخصوص رنگ کی نمائندگی کرتا ہے، جبکہ CGColorSpace ان اجزاء کی تشریح کا ماڈل متعین کرتا ہے۔ Apple Documentation (2026) کے مطابق، Core Graphics sRGB، Generic Gray اور Generic CMYK سمیت 20 سے زیادہ معیاری رنگوں کی جگہوں کو سپورٹ کرتا ہے۔ iOS اور macOS پر درست گرافکس رینڈرنگ کے لیے CGColor اور CGColorSpace کے درمیان فرق کو سمجھنا ضروری ہے۔

اہم نکات

  • CGColor — ایک آبجیکٹ جو رنگوں کے اجزاء اور رنگ کی جگہ کے حوالہ کو ذخیرہ کرتا ہے
  • CGColorSpace — ایک آبجیکٹ جو رنگوں کے اجزاء کی تشریح کا ماڈل متعین کرتا ہے (RGB, Gray, CMYK)
  • ہر CGColor بالکل ایک CGColorSpace سے منسلک ہوتا ہے — جگہ کے بغیر رنگ نامکمل سمجھا جاتا ہے
  • Core Graphics آلات کے درمیان درست رنگ تولید کے لیے ICC پر مبنی رنگ کا انتظام فراہم کرتا ہے
  • رنگوں کی جگہوں کے درمیان تبدیلی macOS پر ColorSync کے ذریعے اور iOS پر Quartz Core کے ذریعے کی جاتی ہے

CGColor اور CGColorSpace کیا ہیں؟

CGColor Core Graphics کا ایک بنیادی آبجیکٹ ہے جو رنگ کی نمائندگی کرتا ہے۔ CGColor ساخت رنگوں کے اجزاء کی عددی قدروں اور CGColorSpace کے حوالہ کو ذخیرہ کرتی ہے — وہ رنگ کی جگہ جس میں ان اجزاء کی تشریح کی جاتی ہے۔ رنگ کی جگہ سے منسلک ہوئے بغیر، اجزاء کی عددی قدروں کا کوئی مطلب نہیں ہے: RGB میں قدر (1.0, 0.0, 0.0) سرخ ہے، لیکن CMYK میں نیلا سبز ہے۔

CGColorSpace ایک آبجیکٹ ہے جو رنگ کے ماڈل اور قابل نمائندگی قدروں کی حد (gamut) کو متعین کرتا ہے۔ رنگ کی جگہ ان اصولوں کو طے کرتی ہے جن کے ذریعے عددی اجزاء کسی مخصوص آؤٹ پٹ ڈیوائس پر نظر آنے والے رنگ میں بدل جاتے ہیں۔ Core Graphics معیاری ICC پروفائل والی جگہوں اور حسب ضرورت تبدیلی کی میزوں کے ساتھ CGColorSpace کے ذریعے بنائی گئی حسب ضرورت جگہوں دونوں کو سپورٹ کرتا ہے۔

رنگ اور رنگ کی جگہ کو الگ کرنے والا فن تعمیر Core Graphics کی ایک اہم خصوصیت ہے جو اسے APIs سے ممتاز کرتی ہے جہاں رنگ کو نمبروں کے ایک سادہ سیٹ کے طور پر ذخیرہ کیا جاتا ہے۔ یہ طریقہ Core Graphics کو آلے سے آزاد رنگ کے انتظام کرنے کی اجازت دیتا ہے: CGColorSpace پروفائل کے ذریعے خودکار اجزاء کی تبدیلی کی بدولت ایک ہی CGColor آبجیکٹ مختلف ڈسپلے پر درست طریقے سے دکھایا جا سکتا ہے۔

Core Graphics میں رنگ کیسے کام کرتے ہیں

Core Graphics رنگ کو ICC پروفائلز (International Color Consortium) پر مبنی ماڈل کے ذریعے نافذ کرتا ہے۔ ہر CGColorSpace میں ایک ICC پروفائل کا حوالہ ہوتا ہے — ایک معیاری وضاحت کہ رنگوں کے اجزاء CIE XYZ میں کیسے تبدیل ہوتے ہیں — ایک آلے سے آزاد رنگ کی جگہ۔ یہ Core Graphics کو مختلف سکرینوں کے درمیان خودکار کلریمیٹرک معاوضہ کرنے کی اجازت دیتا ہے۔

CGColor آبجیکٹ کا لائف سائیکل

CGColorCreate فنکشن کے ذریعے CGColor بناتے وقت، اجزاء کو پاس کردہ صف سے حاصل کیا جاتا ہے اور مخصوص CGColorSpace سے منسلک کیا جاتا ہے۔ Core Graphics اجزاء کو اندرونی نمائندگی میں کاپی کرتا ہے اور رنگ کی جگہ کے ساتھ ایک تعلق بناتا ہے۔ اس کے بعد، رنگ کسی بھی گرافکس آپریشن — بھرائی، خاکہ، گرڈیئنٹ، سایہ میں استعمال کے لیے تیار ہے۔

ColorSync کے ذریعے رنگ کا انتظام

macOS پر، رنگ کا انتظام Core Graphics میں ضم ColorSync فریم ورک کے ذریعے کیا جاتا ہے۔ ColorSync ڈسپلے کیلیبریشن کو ٹریک کرتا ہے اور خود بخود اجزاء کو منبع رنگ کی جگہ سے ہدف آلے کی جگہ میں تبدیل کرتا ہے۔ iOS پر، رنگ کا انتظام iPhone 7 سے شروع ہو کر، وسیع رنگ رینج (Display P3) کے سپورٹ کے ساتھ Quartz Core کے ذریعے نافذ کیا جاتا ہے۔

CGColorSpace میں بنیادی رنگوں کے ماڈل

CGColorSpace چار بنیادی رنگوں کے ماڈلز کو سپورٹ کرتا ہے: RGB (DeviceRGB, sRGB, Display P3), Gray (DeviceGray), CMYK (DeviceCMYK) اور Lab۔ ہر ماڈل رنگوں کے اجزاء کی تعداد اور معنی کو متعین کرتا ہے۔ RGB تین چینلز استعمال کرتا ہے — سرخ، سبز، نیلا؛ Gray ایک چمک چینل استعمال کرتا ہے؛ CMYK پرنٹنگ کے لیے چار چینلز استعمال کرتا ہے؛ Lab تین چینلز استعمال کرتا ہے: چمک اور دو رنگ فرق کے اجزاء۔

رنگ کا ماڈلاجزاءاستعمالCGColorSpace قسم
RGBسرخ، سبز، نیلاسکرینیں، iOS/macOS گرافکسkCGColorSpaceSRGB
Grayسفید (ایک چینل)سیاہ اور سفید گرافکس، سائےkCGColorSpaceGenericGray
CMYKنیلا سبز، مینجینٹا، پیلا، سیاہپرنٹ شدہ مصنوعات، PDFkCGColorSpaceGenericCMYK
Display P3R, G, B (وسیع رینج)جدید iOS آلاتkCGColorSpaceDisplayP3

DeviceRGB اور sRGB

DeviceRGB Core Graphics کی سب سے عام ڈیفالٹ رنگ کی جگہ ہے۔ یہ ICC پروفائلنگ کے بغیر معیاری LCD ڈسپلے کی رنگ رینج استعمال کرتا ہے۔ UIView یا NSView گرافکس سیاق و سباق بناتے وقت، Core Graphics خود بخود DeviceRGB کو ڈیفالٹ رنگ کی جگہ کے طور پر مقرر کرتا ہے۔ sRGB ایک مقررہ رینج اور گاما کے ساتھ ICC پروفائل والا ورژن ہے، جو ویب مواد کے لیے تجویز کیا جاتا ہے۔

Display P3 — وسیع رنگ رینج

Display P3 DCI-P3 معیار پر مبنی ایک رنگ کی جگہ ہے، جو وسیع رنگ والے ڈسپلے والے جدید iOS آلات میں استعمال ہوتی ہے۔ یہ sRGB سے تقریباً 25% زیادہ نظر آنے والے رنگوں کو کور کرتی ہے، خاص طور پر سپیکٹرم کے سبز اور سرخ علاقوں میں۔ iOS پر Display P3 کے ساتھ کام کرنے کے لیے، iOS 9.3 سے دستیاب مستقل kCGColorSpaceDisplayP3 استعمال کریں۔

CGColor بنانا اور اس کا انتظام کرنا

CGColor CGColorCreate فنکشن کے ذریعے بنایا جاتا ہے، جو CGColorSpace اور CGFloat اجزاء کی ایک صف لیتا ہے۔ اجزاء کی تعداد رنگ کے ماڈل پر منحصر ہے: Gray کے لیے 1، RGB کے لیے 3، CMYK کے لیے 4۔ ایک بار بننے کے بعد، CGColor ایک ناقابل تبدیل (immutable) آبجیکٹ ہے — آپ اس کے اجزاء کو تبدیل نہیں کر سکتے، صرف ایک نیا رنگ بنا سکتے ہیں۔

Core Graphics معیاری (عام) رنگوں کی جگہوں میں رنگ بنانے کے لیے CGColorCreateGenericRGB، CGColorCreateGenericGray اور CGColorCreateGenericCMYK فنکشن بھی فراہم کرتا ہے۔ یہ فنکشن واضح طور پر CGColorSpace بنانے کی ضرورت کو ختم کرکے کوڈ کو آسان بناتے ہیں۔ مزید برآں، Quartz 2D بنیادی رنگوں کے لیے مستقل متعین کرتا ہے: kCGColorWhite، kCGColorBlack، kCGColorClear۔

رنگ بناتے وقت، اجزاء کی ترتیب اہم ہے — اسے رنگ کی جگہ کے ماڈل کے ذریعے متعین چینل کی ترتیب سے سختی سے میل کھانا چاہیے۔ RGB: سرخ (0.0–1.0)، سبز، نیلا، الفا (0.0–1.0)۔ Gray: چمک، الفا۔ CMYK: نیلا سبز، مینجینٹا، پیلا، سیاہ، الفا۔ اجزاء کی ترتیب کی خلاف ورزی مرتب کرنے کی غلطی کے بغیر غلط رنگ ڈسپلے کا باعث بنتی ہے۔

الفا چینل اور شفافیت

الفا چینل چوتھا جزو (یا Gray کے لیے دوسرا) ہے جو رنگ کی شفافیت کو کنٹرول کرتا ہے۔ قدر 1.0 مکمل دھندلاپن سے مطابقت رکھتی ہے، 0.0 مکمل شفافیت سے۔ CGColor میں الفا چینل اختیاری ہے: CGColorGetAlpha فنکشن موجودہ الفا قدر لوٹاتا ہے، جو بنیادی فنکشنز کے ذریعے بنانے پر ڈیفالٹ طور پر 1.0 ہوتی ہے۔ رنگوں کو ملانے پر، Core Graphics Porter-Duff Source Over اصول کے مطابق الفا کمپوزٹنگ استعمال کرتا ہے۔

CGColorSpace کے ساتھ کام کرنا

CGColorSpace Core Graphics فیکٹری فنکشنز کے ذریعے بنایا جاتا ہے: CGColorSpaceCreateDeviceRGB، CGColorSpaceCreateDeviceGray، CGColorSpaceCreateDeviceCMYK یا نامزد جگہوں (sRGB, Display P3, Generic Gray) کے لیے CGColorSpaceCreateWithName۔ CGColorSpace آبجیکٹ ناقابل تبدیل اور تھریڈ محفوظ ہے — ایک ہی آبجیکٹ متعدد گرافکس سیاق و سباق میں استعمال کیا جا سکتا ہے۔

بنیادی CGColorSpace حاصل کرنا

Core Graphics نامزد مستقلوں کے ذریعے کئی پہلے سے متعین رنگوں کی جگہیں فراہم کرتا ہے: kCGColorSpaceSRGB، kCGColorSpaceDisplayP3، kCGColorSpaceGenericGrayGamma2_2۔ یہ مستقل CGColorSpaceCreateWithName میں پاس کیے جاتے ہیں۔ وسیع رنگ رینج والے iOS آلات کے لیے Display P3 تجویز کیا جاتا ہے، کیونکہ sRGB ڈسپلے کی صلاحیتوں کو مکمل طور پر استعمال نہیں کر سکتا۔

ICC پروفائلز اور حسب ضرورت CGColorSpace

ICC پروفائلز معیاری فائلیں ہیں جو آلے کی رنگین خصوصیات کو بیان کرتی ہیں۔ Core Graphics CGColorSpaceCreateWithICCProfile کے ذریعے کسی صوابدیدی ICC پروفائل کی بنیاد پر CGColorSpace بنانے کی اجازت دیتا ہے۔ یہ پیشہ ورانہ ایپلیکیشنز میں فوٹو پرنٹنگ اور پری پریس کے لیے استعمال ہوتا ہے جہاں کسی مخصوص پرنٹر یا مانیٹر سے درست مماثلت کی ضرورت ہوتی ہے۔

رنگوں کی جگہوں کے درمیان تبدیلی

Core Graphics CGContextSetFillColorWithColor یا CGContextSetStrokeColorWithColor فنکشنز کے ذریعے رینڈرنگ کے دوران خود بخود رنگوں کی جگہوں کے درمیان تبدیلی کرتا ہے۔ اگر گرافکس سیاق و سباق کی رنگ کی جگہ پاس کردہ CGColor کی رنگ کی جگہ سے مختلف ہو، تو Quartz 2D دونوں جگہوں کے ICC پروفائلز کا استعمال کرتے ہوئے تبدیلی کرتا ہے۔

واضح رنگ کی تبدیلی کے لیے، CGColorCreateCopyByMatchingToColorSpace استعمال کریں — ایک فنکشن جو ایک نیا CGColor بناتا ہے جس کے اجزاء منبع جگہ سے ہدف جگہ میں دوبارہ شمار کیے جاتے ہیں۔ Apple Technical Note TN2313 (2024) کے مطابق، Display P3 سے sRGB میں تبدیل کرتے وقت، sRGB رینج سے باہر کے رنگ کلپ ہو جاتے ہیں، جس سے سنترپتی میں کمی آتی ہے۔ یہ خاص طور پر چمکدار سبز اور سرخ رنگوں میں نمایاں ہے۔

ColorSync macOS پر گرافکس اسٹیک کی سطح پر نظام سطح کا رنگ کا انتظام فراہم کرتا ہے۔ اگر کوئی ایپلیکیشن واضح رنگ کی جگہ متعین نہیں کرتی، تو Core Graphics ColorSync سے حاصل کردہ ڈسپلے کی جگہ استعمال کرتا ہے۔ یہ یقینی بناتا ہے کہ مختلف مانیٹرز پر رنگ ایک جیسے نظر آئیں، چاہے وہ مختلف رنگ پروفائلز استعمال کریں۔

Swift کوڈ کی مثالیں

آئیے iOS ایپلیکیشن میں CGColor اور CGColorSpace بنانے اور استعمال کرنے کی عملی مثالوں کو دیکھتے ہیں۔ کوڈ Core Graphics فنکشنز کا استعمال کرتے ہوئے Swift میں لکھا گیا ہے۔

مختلف رنگوں کی جگہوں کے ساتھ CGColor بنانا

یہ مثال تین مختلف رنگوں کی جگہوں میں سرخ رنگ بنانا دکھاتی ہے۔ ایک جیسے RGB اجزاء کے باوجود، CGColorSpace رینج پر منحصر ہو کر رنگ مختلف نظر آئے گا۔

swift
import CoreGraphics

// DeviceRGB میں رنگ بنانا
let rgbSpace = CGColorSpaceCreateDeviceRGB()
let redColor = CGColorCreate(rgbSpace, [1.0, 0.0, 0.0, 1.0])

// Display P3 میں رنگ بنانا
let p3Space = CGColorSpaceCreateWithName(kCGColorSpaceDisplayP3)
let p3RedColor = CGColorCreate(p3Space, [1.0, 0.0, 0.0, 1.0])

// خاکستری رنگ بنانا
let graySpace = CGColorSpaceCreateDeviceGray()
let grayColor = CGColorCreate(graySpace, [0.5, 1.0])

رنگوں کی جگہوں کے درمیان رنگ کی تبدیلی

یہ مثال Display P3 سے sRGB میں ایک چمکدار سبز رنگ کو تبدیل کرتی ہے۔ اس طرح کی تبدیلی کے دوران، sRGB رینج سے باہر کے رنگوں کو ڈھال لیا جائے گا، جو رنگت کو بدل سکتا ہے۔

swift
let p3Space = CGColorSpaceCreateWithName(kCGColorSpaceDisplayP3)
let sRGBSpace = CGColorSpaceCreateWithName(kCGColorSpaceSRGB)

// Display P3 میں چمکدار سبز (sRGB رینج سے باہر)
let p3Green = CGColorCreate(p3Space, [0.0, 1.0, 0.0, 1.0])

// sRGB میں تبدیلی
let srgbGreen = CGColorCreateCopyByMatchingToColorSpace(
    sRGBSpace, p3Green, kCGRenderingIntentDefault
)

گرافکس سیاق و سباق میں CGColor کا استعمال

یہ مثال کسٹم UIView میں CGColor کا استعمال کرتے ہوئے بھرے ہوئے دائرے کی ڈرائنگ دکھاتی ہے۔ draw طریقہ موجودہ گرافکس سیاق و سباق UIGraphicsGetCurrentContext حاصل کرتا ہے، جس میں بھرائی کا رنگ مقرر کیا جاتا ہے۔

swift
class ColorView: UIView {
    override func draw(rect: CGRect) {
        guard let ctx = UIGraphicsGetCurrentContext()
        else { return }

        let rgbSpace = CGColorSpaceCreateDeviceRGB()
        let blueColor = CGColorCreate(
            rgbSpace,
            [0.2, 0.4, 1.0, 1.0]
        )

        ctx.setFillColor(blueColor)
        ctx.fillEllipse(in: CGRect(x: 50, y: 50,
                                  width: 200, height: 200))
    }
}

اکثر پوچھے گئے سوالات

CGColor UIColor سے کیسے مختلف ہے؟

CGColor Core Graphics سے ایک نچلی سطح کی رنگ نمائندگی ہے جو C-انداز API میں استعمال ہوتی ہے۔ UIColor ایک اعلیٰ سطحی UIKit ریپر ہے جو اندرونی طور پر CGColor ذخیرہ کرتا ہے اور ڈارک موڈ کے فرق (traitCollection) کے لیے سپورٹ شامل کرتا ہے۔ UIColor کو .cgColor خاصیت کے ذریعے CGColor میں تبدیل کیا جا سکتا ہے۔

CGColor کے لیے رنگ کی جگہ کیوں متعین کرنی چاہیے؟

رنگ کی جگہ متعین کرتی ہے کہ عددی اجزاء کو نظر آنے والے رنگ کے طور پر کیسے تشریح کیا جاتا ہے۔ نمبروں کا ایک ہی سیٹ (1.0, 0.0, 0.0) RGB میں سرخ ہے، لیکن CMYK میں نیلا سبز ہے۔ CGColorSpace کے بغیر، Core Graphics اپنی منفرد ڈسپلے خصوصیات والے کسی مخصوص آلے پر رنگ کو درست طریقے سے ظاہر نہیں کر سکتا۔

iOS میں ڈیفالٹ طور پر کون سی رنگ کی جگہ استعمال ہوتی ہے؟

iOS پر، UIView گرافکس سیاق و سباق ڈیفالٹ طور پر DeviceRGB رنگ کی جگہ کے ساتھ بنایا جاتا ہے۔ وسیع رنگ والے ڈسپلے والے آلات (iPad Pro 9.7 انچ اور بعد کے، iPhone 7 اور بعد کے) پر، Display P3 بھی دستیاب ہے، جو معیاری sRGB سے 25% زیادہ رنگوں کو سپورٹ کرتی ہے۔

کیا تخلیق کے بعد CGColor کے اجزاء تبدیل کیے جا سکتے ہیں؟

نہیں، CGColor ایک ناقابل تبدیل (immutable) آبجیکٹ ہے۔ مختلف اجزاء کے ساتھ رنگ حاصل کرنے کے لیے، آپ کو CGColorCreate کے ذریعے ایک نیا CGColor بنانا ہوگا۔ یہ Core Graphics ڈیزائن کی پیروی کرتا ہے جہاں تھریڈ سیفٹی اور رینڈرنگ کی پیش قیاسی کو یقینی بنانے کے لیے زیادہ تر آبجیکٹ ناقابل تبدیل ہیں۔

CGColor کو RGB سے CMYK میں کیسے تبدیل کریں؟

تبدیلی کے لیے، ہدف CMYK جگہ کے ساتھ CGColorCreateCopyByMatchingToColorSpace استعمال کریں۔ Core Graphics رینڈرنگ ارادے کو مدنظر رکھتے ہوئے ICC پروفائلز کے ذریعے تبدیلی کرے گا۔ پرنٹنگ کے لیے kCGRenderingIntentRelativeColorimetric یا فوٹو ریئلسٹک تصاویر کے لیے kCGRenderingIntentPerceptual منتخب کریں۔

خلاصہ

  • CGColor — اجزاء اور رنگ کی جگہ کے حوالہ کے ساتھ ایک ناقابل تبدیل رنگ آبجیکٹ
  • CGColorSpace — رنگ کے ماڈل (RGB, Gray, CMYK) اور قابل نمائندگی رنگوں کی حد کو متعین کرتا ہے
  • DeviceRGB — iOS اور macOS گرافکس سیاق و سباق کے لیے ڈیفالٹ رنگ کی جگہ
  • Display P3 — sRGB سے 25% زیادہ کوریج کے ساتھ جدید Apple آلات کے لیے ایک وسیع رنگ کی جگہ
  • ICC پروفائلز ColorSync کے ذریعے مختلف آلات کے درمیان درست رنگ کی تبدیلی کو یقینی بناتے ہیں
  • الفا چینل — ایک اختیاری شفافیت کا جزو جو Porter-Duff کمپوزٹنگ میں حصہ لیتا ہے
  • تبدیلی جگہوں کے درمیان رینڈرنگ کے دوران خود بخود یا واضح طور پر CGColorCreateCopyByMatchingToColorSpace کے ذریعے کی جاتی ہے

ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے

IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں