كيف يمكنك استخدام صورة كخلفية لحقل نص في الكاكاو؟
-
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] ووضع الصورة وراء ذلك.