كيف يمكنك استخدام صورة كخلفية لحقل نص في الكاكاو؟

StackOverflow https://stackoverflow.com/questions/765104

  •  12-09-2019
  •  | 
  •  

سؤال

هل من الممكن استخدام صورة كخلفية لحقل نص في الكاكاو؟ إذا كان الأمر كذلك، كيف؟

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

المحلول

لا أعرف إذا كانت هذه هي الطريقة الصحيحة "الصحيحة" للقيام بذلك، ولكن أول ما يتبادر إلى الذهن سيكون هو جعل فرعية مخصصة من nstextfield، والتي قد تبدو تقريبا مثل هذا:

- (void)awakeFromNib
{
    [self setDrawsBackground:NO];
}

- (void)drawRect:(NSRect)rect
{
    [super drawRect:rect];

    [self lockFocus];
    [[NSImage imageNamed:@"<#image filename#>"] drawInRect:rect
        fromRect:rect
        operation:NSCompositeSourceOver
        fraction:1.0];
    [self unlockFocus];
}

مرة أخرى، هذا مخطط تقريبي فقط للأجزاء الأساسية.

على أي حال، كما قلت، لست متأكدا مما إذا كان هذا هو حقا طريقة "صحيح" للقيام بذلك (أو إذا كان هناك حتى "صحيح"، لهذا المسألة)، ولكن هذا سوف يمنحك صورة خلفية ل nstextfield الخاص بك وبعد

تحرير استجابة لتعليق جوشوا (لن يكون لدي غرفة كافية في تلك المربع تعليق صغير صغير):

لإضافة الصورة إلى مشروعك، ستقوم بسحبها من أي مكان في نافذة المشروع (القائمة الرئيسية للملفات الموجودة في منتصف نافذة المشروع، على الرغم من اعتمادك على كيفية إعداد بيئة تحرير XCode الخاصة بك، هذا قد تكون مختلفة بالنسبة لك).

من أجل الفئة الفرعية NSTextField, ، كنت ترغب في إنشاء ملف فئة موضوع جديد (ملف -> ملف جديد ...)، ولكن قم بتحرير الرأس بحيث يرث الفصل NSTextField بدلا من NSObject. وبعد وبعبارة أخرى، قد يبدو ملف رأسك هذا:

#import <Cocoa/Cocoa.h>

@interface BGImageTextField : NSTextField
{
}

@end

بالنسبة لبقية التعليمات البرمجية، كنت ترغب في إضافة ذلك في الجسم الرئيسي لملف التنفيذ (BGImageTextField.m, ، على سبيل المثال)، خصيصا بين @implementation و @end الكلمات الدالة.

أود أيضا أن أذكر شيئين. أولا، أود أن أوصي بالتقاط نسخة من برمجة الكاكاو لنظام التشغيل Mac OS X, بقلم آرون هيليلاس - فهي تغطي معظم أساسيات الكاكاو التي مرت بها للتو، وهي واحدة من أفضل الطرق لتعلم الكاكاو بشكل عام. ثانيا، على الرغم من أن نهجي يعمل، فمن المحتمل أن لا يكون أفضل طريقة - خاصة منذ أن وجدت مؤخرا هذا المشنور, ، والذي يبدو أنه يتردد بطريقة أفضل لتوسيع NSTEXTFILD.

نصائح أخرى

بدلا من الفئة الفئة الفرعية NSTEXTFILD، ما عليك سوى جعل لون الخلفية شفافة [NSCLOR CLEALCOLOR] ووضع الصورة وراء ذلك.

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