سؤال

هل هناك طريقة سهلة للقيام بذلك تعمل في 10.5؟

في 10.6 يمكنني استخدام nsimage cgimageforproposedrect: سياق فارغ: تلميحات فارغة: فارغة

إذا كنت لا أستخدم صورًا بالأبيض والأسود 1B (مثل المجموعة 4 TIFF) ، فيمكنني استخدام نقار النقط ، ولكن يبدو أن cgbitmaps لا تحب هذا الإعداد ... هل هناك طريقة عامة للقيام بذلك؟

أحتاج إلى القيام بذلك لأن لديّ ikimageview يبدو أنه يريد فقط إضافة cgimages ، لكن كل ما لدي هو nsimages. حاليًا ، أستخدم طريقة setImage الخاصة: (nsimage*) التي سأستخدمها حقًا ...

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

المحلول

وجدت الحل التالي على هذه الصفحة:

NSImage* someImage;
// create the image somehow, load from file, draw into it...
CGImageSourceRef source;

source = CGImageSourceCreateWithData((CFDataRef)[someImage TIFFRepresentation], NULL);
CGImageRef maskRef =  CGImageSourceCreateImageAtIndex(source, 0, NULL);

يبدو أن جميع الطرق هي 10.4+ ، لذا يجب أن تكون بخير.

نصائح أخرى

هذا هو الطريق الطويل. يجب عليك القيام بذلك فقط إذا كنت لا تزال تدعم إصدارًا قديمًا من OS X. إذا كنت تتطلب 10.6 أو أحدث ، فقط استخدم CGImage طريقة في حين أن.

  1. إنشاء cgbitmapcontext.
  2. إنشاء nsgraphicscontext لسياق صورة نقطية.
  3. اضبط سياق الرسومات على أنه السياق الحالي.
  4. ارسم الصورة.
  5. قم بإنشاء cgimage من محتويات سياق الصورة النقطية.
  6. حرر سياق الصورة النقطية.

اعتبارًا من Snow Leopard ، يمكنك فقط اطلب من الصورة إنشاء cgimage لك, ، عن طريق إرسال nsimage CGImageForProposedRect:context:hints: رسالة.

إليك إجابة أكثر تفصيلاً لاستخدامها - CGImageForProposedRect:context:hints::

NSImage *image = [NSImage imageNamed:@"image.jpg"];

NSRect imageRect = NSMakeRect(0, 0, image.size.width, image.size.height);

CGImageRef cgImage = [image CGImageForProposedRect:&imageRect context:NULL hints:nil];

فقط فعلت هذا باستخدام CGImageForProposedRect:context:hints:...

NSImage *image; // an image
NSGraphicsContext *context = [NSGraphicsContext currentContext];
CGRect imageCGRect = CGRectMake(0, 0, image.size.width, image.size.height);
NSRect imageRect = NSRectFromCGRect(imageCGRect);
CGImageRef imageRef = [image CGImageForProposedRect:&imageRect context:context hints:nil];
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top