شاشة#

مقدمة#

تُشتق الفئة screen من الفئة الأساسية brain. وهي تتحكم في كيفية عرض معالج V5 Brain للنصوص والأرقام والرسومات على شاشته اللمسية، وكيفية استجابته لإدخال اللمس.

بشكل افتراضي، يكون الخط المستخدم للطباعة على جهاز Brain هو خط صغير أحادي المسافة والذي يحتوي على 12 صفًا و 48 عمودًا.

أما بالنسبة للرسم، فإن دقة الدماغ تبلغ 480 × 240 بكسل.

شاشة V5 Brain بخطوط شبكية حمراء توضح تخطيط 12 صفًا و48 عمودًا إجمالًا. أبعادها بالبكسل 479 عرضًا و239 ارتفاعًا. تبدأ الزاوية العلوية اليسرى عند (0,0) بكسل والصف 1 والعمود 1، بينما تنتهي الزاوية السفلية اليمنى عند (479, 239) بكسل والصف 12 والعمود 48.

وصول#

The screen class can be accessed by:

Brain.Screen

ملحوظات#

  • يتم توفير الكائن screen بواسطة الدماغ. ولا يتم إنشاؤه بشكل مباشر.

  • تستخدم المشاريع كائنًا عالميًا واحدًا Brain ، لذلك يتم استدعاء وظائف الشاشة باستخدام Brain.Screen.

مثال#

/* This constructor is required when using VS Code.
A Brain is generated automatically at the start of
VEXcode projects. */

// Create the V5 Brain
brain Brain = brain();

// Print text to the Brain screen
Brain.Screen.print("Hello!");

الدوال الأعضاء#

تتضمن فئة الشاشة screen الدوال الأعضاء التالية:

  • print — يطبع النص المنسق أو الأرقام أو القيم المنطقية على شاشة الدماغ.

  • setCursor — ينقل مؤشر النص إلى صف وعمود محددين.

  • newLine — يمسح ما تبقى من السطر الحالي وينقل المؤشر إلى السطر التالي.

  • clearLine — يمسح ما تبقى من السطر الحالي أو يمسح سطرًا محددًا.

  • row — تُرجع الصف الذي سيتم فيه طباعة النص.

  • column — تُرجع العمود الذي سيتم طباعة النص فيه.

  • getStringHeight — تُرجع ارتفاع السلسلة بالبكسل باستخدام الخط الحالي.

  • getStringWidth — تُرجع عرض السلسلة بالبكسل باستخدام الخط الحالي.

  • printAt — يطبع النص المنسق في موقع البكسل x، y.

  • clearScreen — يمسح جميع الرسومات والنصوص من شاشة الدماغ.

  • setFont — يحدد الخط المستخدم للطباعة على الشاشة.

  • setPenWidth — يحدد سمك الخطوط المرسومة ومخططات الأشكال.

  • setPenColor — يحدد لون النص والبكسلات والخطوط ومخططات الأشكال.

  • setFillColor — يحدد لون التعبئة للأشكال المرسومة وخلفيات النصوص المطبوعة.

  • setOrigin — يحدد الأصل المستخدم لإحداثيات الشاشة.

  • setClipRegion — يقيد إخراج الشاشة إلى منطقة مستطيلة.

  • drawPixel — يرسم بكسل واحد عند إحداثية معينة.

  • drawLine — يرسم خطًا بين نقطتين.

  • drawRectangle — يرسم مستطيلاً في موقع x، y بحجم محدد.

  • drawCircle — يرسم دائرة عند موقع x، y بنصف قطر محدد.

  • drawImageFromFile — يرسم صورة من ملف بطاقة SD على الشاشة.

  • render — تمكين التخزين المؤقت المزدوج أو عرض المخزن المؤقت الخلفي على الشاشة.

  • pressing — إرجاع ما إذا كانت الشاشة قيد الضغط حاليًا.

  • xPosition — تُرجع إحداثيات x لأحدث ضغطة على الشاشة.

  • yPosition — تُرجع إحداثيات y لأحدث ضغطة على الشاشة.

  • pressed — يسجل دالة رد نداء لتشغيلها عند الضغط على الشاشة.

  • released — يسجل دالة رد نداء لتشغيلها عند تحرير الشاشة بعد الضغط عليها.

قبل استدعاء أي من وظائف الأعضاء screen ، يجب إنشاء مثيل brain ، كما هو موضح أدناه:

// Create the V5 Brain
brain Brain = brain();

print#

يعرض النصوص أو الأرقام أو القيم المنطقية على شاشة V5 Brain.

Available Functions

1 — يطبع النص المنسق باستخدام السلاسل النصية الحرفية أو السلاسل النصية للقراءة فقط على نمط لغة C.

void print(
    const char* format,
    ... );

2 — يطبع نصًا منسقًا باستخدام مصفوفات الأحرف القابلة للتعديل.

void print(
    char* format,
    ... );

Parameters

المعلمة

يكتب

وصف

format

const char*

سلسلة تنسيق يتم توفيرها كسلسلة حرفية أو سلسلة للقراءة فقط على نمط لغة C (على سبيل المثال، “Score: %d”).

format

char*

سلسلة تنسيق مُقدمة كمصفوفة أحرف قابلة للتعديل.

…

قيمة واحدة أو أكثر إضافية يتم إدراجها في سلسلة التنسيق، مفصولة بفواصل.

Return Values

هذه الدالة لا تُرجع قيمة.

Notes
  • Output begins at the current cursor position on the screen.

  • يستخدم النص المطبوع خط الشاشة .

  • يستخدم النص المطبوع لون القلم .

  • يتم طباعة النص باستخدام print دائمًا مع خلفية، ويتم تحديد لون الخلفية بواسطة لون التعبئة الحالي.

  • عند استخدام سلسلة تنسيق، يجب أن يتطابق عدد وأنواع القيم التي تم تمريرها مع محددات التنسيق في السلسلة.

Examples
// Display a message at the starting cursor
Brain.Screen.print("Hello, Robot!");

لقطة شاشة لدماغ V5 تُظهر عبارة "مرحباً أيها الروبوت!" مطبوعة على الشاشة في الزاوية العلوية اليسرى بنص أبيض.

setCursor#

ينقل المؤشر إلى صف وعمود محددين على شاشة V5 Brain. سيبدأ استدعاء print التالي الطباعة من ذلك الموقع.

Available Functions
void setCursor(
  int32_t row, 
  int32_t col );

Parameters

المعلمة

يكتب

وصف

row

int32_t

الصف الذي سيتم تحريك المؤشر إليه.

col

int32_t

العمود الذي سيتم تحريك المؤشر إليه.

Return Values

هذه الدالة لا تُرجع قيمة.

Notes
  • يؤثر على مكان بدء إخراج النص اللاحق عند استخدام print.

  • تعتمد الصفوف والأعمدة على خط الشاشة المحدد حاليًا.

  • يستخدم الخط الافتراضي (mono20) 12 صفًا و48 عمودًا.

  • يؤثر استدعاء الدالة setCursor ) على موضع إخراج النص اللاحق فقط.

Examples
// Display text starting at Row 3 Column 12
Brain.Screen.setCursor(3, 12);
Brain.Screen.print("Row 3, Column 12");

لقطة شاشة لدماغ V5 تُظهر الصف 3 العمود 12 مطبوعًا في الجزء العلوي بالقرب من مركز الشاشة، في ذلك الموضع.

newLine#

ينقل المؤشر إلى بداية الصف التالي على شاشة الدماغ.

Available Functions
void newLine();

Parameters

لا تقبل هذه الدالة أي معلمات.

Return Values

هذه الدالة لا تُرجع قيمة.

Notes
  • إذا كان المؤشر في منتصف جملة، فإن newLine سيمسح باقي السطر بعد المؤشر قبل الانتقال إلى السطر التالي.

  • بعد استدعاء newLine، يتم وضع المؤشر في العمود الأول من السطر التالي.

  • يتم تعيين موضع المؤشر وترقيم الصفوف باستخدام setCursor.

Examples
// Display two lines of text
Brain.Screen.print("Line 1");
Brain.Screen.newLine();
Brain.Screen.print("Line 2");

لقطة شاشة لشاشة V5 Brain تُظهر سطرين من النص الأبيض في الزاوية العلوية اليسرى. السطر الأول مكتوب عليه "السطر 1"، والسطر الثاني الذي يليه مباشرةً مكتوب عليه "السطر 2".

clearLine#

يمسح النص من صف على شاشة V5 Brain.

Available Functions

1 — يمسح باقي السطر الحالي من موضع المؤشر.

void clearLine();

2 — يمسح الصف المحدد باستخدام لون التعبئة.

void clearLine(
    int number );

3 — يمسح الصف المحدد باستخدام كائن لون محدد مسبقًا أو لون مخصص.

void clearLine(
    int          number,
    const color& color );

4 — يمسح الصف المحدد باستخدام قيمة لون سداسية عشرية.

void clearLine(
    int         number,
    const char* color );

5 — يمسح الصف المحدد باستخدام قيمة اللون.

void clearLine(
    int number,
    int hue );

Parameters

المعلمة

يكتب

وصف

number

int

رقم الصف المراد مسحه. يبدأ ترقيم الصفوف من 1.

color

const color&

Clears the row using a color object. Predefined colors include:

  • black
  • white
  • red
  • green
  • blue
  • yellow
  • orange
  • purple
  • cyan
  • transparent
This can also use a custom color object.

color

const char*

يقوم بمسح الصف باستخدام قيمة لون سداسية عشرية (على سبيل المثال، “#000000”).

hue

int

يقوم بمسح الصف باستخدام قيمة لونية صحيحة في النطاق 0–359، والتي تمثل درجات حول عجلة الألوان.

Return Values

هذه الدالة لا تُرجع قيمة.

Notes
  • مسح سطر لا يغير موضع المؤشر الحالي.

  • يتم تعيين موضع المؤشر وترقيم الصفوف باستخدام setCursor.

  • تعتمد قيمة المعلمة hue على عجلة ألوان دائرية، كما هو موضح أدناه، حيث تمثل القيم درجات حول العجلة (على سبيل المثال، الأحمر بالقرب من 0 درجة، والأخضر بالقرب من 120 درجة، والأزرق بالقرب من 240 درجة).

عجلة ألوان توضح نطاق الألوان من 0 إلى 359، حيث الأحمر هو 0، والأخضر هو 120، والأزرق هو 240.

Examples
// Display text on two rows
Brain.Screen.print("This text stays");
Brain.Screen.newLine();
Brain.Screen.print("This disappears");

// Wait 3 seconds before clearing row 2
wait(3, seconds);
Brain.Screen.clearLine(2);

row#

يُعيد هذا السطر الصف الذي سيتم فيه طباعة النص على شاشة V5 Brain.

Available Functions
int32_t row();

Parameters

لا تقبل هذه الدالة أي معلمات.

Return Values

Returns an int32_t representing the row where text will be printed.

يبدأ ترقيم الصفوف من 1.

Notes
  • يعتمد موضع المؤشر على خط الشاشة الحالي .

  • تشير القيمة المُعادة إلى مكان ظهور الناتج المطبوع التالي.

  • تتغير قيمة الصف عند طباعة النص أو عند استدعاء setCursor.

Examples
// Display the cursor's current row
Brain.Screen.setCursor(3, 12);
Brain.Screen.print(Brain.Screen.row());

لقطة شاشة لجهاز V5 Brain تُظهر النص 3 باللون الأبيض في الربع العلوي الأيسر من الشاشة، في الصف 3 والعمود 12.

column#

يُعيد هذا الأمر العمود الذي سيتم فيه طباعة النص على شاشة V5 Brain.

Available Functions
int32_t column();

Parameters

لا تقبل هذه الدالة أي معلمات.

Return Values

Returns an int32_t representing the column where text will be printed.

يبدأ ترقيم الأعمدة من 1.

Notes
  • يعتمد موضع المؤشر على خط الشاشة الحالي .

  • تشير القيمة المُعادة إلى مكان ظهور الناتج المطبوع التالي.

  • تتغير قيمة العمود عند طباعة النص أو عند استدعاء setCursor.

Examples
// Display the cursor's current column
Brain.Screen.setCursor(5, 15);
Brain.Screen.print(Brain.Screen.column());

لقطة شاشة لجهاز V5 Brain تُظهر النص 15 باللون الأبيض في الربع العلوي الأيسر من الشاشة، في الصف 3 العمود 15.

getStringHeight#

يُعيد هذا الأمر ارتفاع السلسلة النصية بالبكسل عند عرضها على شاشة V5 Brain.

Available Functions
int32_t getStringHeight( 
    const char* cstr );

Parameters

المعلمة

يكتب

وصف

cstr

const char*

The text to be measured, provided as a C-style string (for example, “Hello”).

Return Values

تُرجع هذه الدالة قيمة int32_t تمثل ارتفاع السلسلة بالبكسل عند عرضها على شاشة Brain.

Notes
  • يعتمد الارتفاع المُعاد على خط الشاشة المحدد حاليًا .

  • تقوم هذه الدالة بقياس السلسلة النصية دون رسمها على الشاشة.

  • يعكس الارتفاع المُعاد كيفية ظهور السلسلة عند طباعتها.

getStringWidth#

تُعيد هذه الدالة عرض السلسلة النصية بالبكسل عند عرضها على شاشة V5 Brain.

Available Functions
int32_t getStringWidth( 
    const char* cstr );

Parameters

المعلمة

يكتب

وصف

cstr

const char*

The text to be measured, provided as a C-style string (for example, “Hello”).

Return Values

تُرجع هذه الدالة قيمة int32_t تمثل عرض السلسلة بالبكسل عند عرضها على شاشة Brain.

Notes
  • يعتمد العرض المُعاد على خط الشاشة المحدد حاليًا .

  • تقوم هذه الدالة بقياس السلسلة النصية دون رسمها على الشاشة.

  • يعكس العرض المُعاد كيفية ظهور السلسلة عند طباعتها.

printAt#

يطبع النصوص أو الأرقام أو القيم المنطقية عند إحداثيات محددة على شاشة V5 Brain.

Available Functions

1 — يطبع المخرجات المنسقة في موقع البكسل المحدد.

void printAt(
    int32_t    x,
    int32_t    y,
    const char* format,
    ... );

2 — يقوم بطباعة المخرجات المنسقة في موقع البكسل المحدد ويحدد ما إذا كانت خلفية النص معتمة أم شفافة.

void printAt(
    int32_t    x,
    int32_t    y,
    bool       bOpaque,
    const char* format,
    ... );

Parameters

المعلمة

يكتب

وصف

x

int32_t

موضع الطباعة على المحور السيني، نسبةً إلى نقطة الأصل على الشاشة.

y

int32_t

موضع الطباعة على المحور الصادي، نسبةً إلى نقطة الأصل على الشاشة.

bOpaque

bool

يتحكم هذا الخيار في ما إذا كان النص المطبوع يُرسم بشكل معتم أو شفاف:

  • true — يتم ملء خلفية النص المطبوع باستخدام لون التعبئة الحالي.
  • false — يتم رسم النص بشكل شفاف ولا يتم ملء الخلفية.

format

const char*

سلسلة تنسيق تتحكم في ما يتم طباعته على الشاشة (على سبيل المثال، “Score: %d”).

…

قيمة واحدة أو أكثر إضافية يتم إدراجها في سلسلة التنسيق، مفصولة بفواصل.

Return Values

هذه الدالة لا تُرجع قيمة.

Notes
  • الإحداثيات x و y نسبية إلى أصل الشاشة الحالي، والذي يمكن تغييره باستخدام setOrigin.

  • يستخدم النص المطبوع خط الشاشة .

  • يستخدم النص المطبوع لون القلم .

  • عند استخدام سلسلة تنسيق، يجب أن يتطابق عدد وأنواع القيم التي تم تمريرها مع محددات التنسيق في السلسلة.

Examples
// Print "Center" at the center of the screen
Brain.Screen.printAt(220, 120, "Center");

لقطة شاشة لشاشة V5 Brain مع نص أبيض مكتوب عليه "Center"، في منتصف الشاشة.

clearScreen#

يمسح جميع الرسومات والنصوص من شاشة الدماغ ويعيد ضبط موضع المؤشر إلى الصف 1، العمود 1.

Available Functions

1 — يمسح الشاشة لتصبح سوداء.

void clearScreen();

2 — يمسح الشاشة باستخدام كائن لون محدد مسبقًا أو لون مخصص.

void clearScreen(
    const color& color );

3 — يمسح الشاشة باستخدام قيمة لونية سداسية عشرية.

void clearScreen(
    const char* color );

4 — يمسح الشاشة باستخدام قيمة اللون.

void clearScreen(
    int hue );

Parameters

المعلمة

يكتب

وصف

color

const color&

Clears the screen using a color object. Predefined colors include:

  • black
  • white
  • red
  • green
  • blue
  • yellow
  • orange
  • purple
  • cyan
  • transparent
This can also use a custom color object.

color

const char*

يقوم بمسح الشاشة باستخدام قيمة لون سداسية عشرية ممثلة كسلسلة نصية (على سبيل المثال، “#000000”).

hue

int

يقوم بمسح الشاشة باستخدام قيمة لونية صحيحة في النطاق 0–359، والتي تمثل درجات حول عجلة الألوان.

Return Values

هذه الدالة لا تُرجع قيمة.

Notes
  • تعتمد قيمة المعلمة hue على عجلة ألوان دائرية، كما هو موضح أدناه، حيث تمثل القيم درجات حول العجلة (على سبيل المثال، الأحمر بالقرب من 0 درجة، والأخضر بالقرب من 120 درجة، والأزرق بالقرب من 240 درجة).

عجلة ألوان توضح نطاق الألوان من 0 إلى 359، حيث الأحمر هو 0، والأخضر هو 120، والأزرق هو 240.

Examples
// Clear screen after 2 seconds
Brain.Screen.print("VEXcode");
wait(2, seconds);
Brain.Screen.clearScreen();


// Clear screen to blue after 2 seconds
Brain.Screen.print("VEXcode");
wait(2, seconds);
Brain.Screen.clearScreen(blue);

لقطة شاشة لشاشة V5 Brain مع منطقة الطباعة بأكملها باللون الأزرق الفاتح.

setFont#

يحدد هذا الخيار نوع الخط المستخدم للنص المعروض على شاشة V5 Brain.

يتحكم هذا في الخط المطبق على إخراج النص اللاحق عند استخدام وظائف نص الشاشة مثل print.

Available Functions
void setFont(
  fontType font );

Parameters

المعلمة

يكتب

وصف

font

fontType

Sets the font to one of the following:

  • mono12
  • mono15
  • mono20
  • mono30
  • mono40
  • mono60
  • prop20
  • prop30
  • prop40
  • prop60
  • fontType::cjk16 — Can print Chinese, Japanese, and Korean characters.
    • Simplified Chinese — Can be seen up to column 28.
    • Traditional Chinese — Can be seen up to column 28.
    • Japanese (Kanji) — Can be seen up to column 28.
    • Korean (Hangul) — Can be seen up to column 30.
These options are shown below.

لقطة شاشة من جهاز V5 Brain، تظهر فيها أرقام وحروف مطبوعة باللون الأبيض في الزاوية العلوية اليسرى بخط MONO 12. يظهر الحرفان AZ في سطر واحد، على ما يقارب ربع عرض الشاشة. وفي الزاوية السفلية اليسرى، يظهر 80 عمودًا و20 صفًا.
mono12

نفس الصورة السابقة، بخط Mono 15. يظهر الحرفان AZ في سطر واحد، على ما يقارب نصف عرض الشاشة. في الزاوية السفلية اليسرى، يظهر 68 عمودًا و16 صفًا.
mono15

نفس الصورة السابقة، بخط Mono 20. يظهر الحرفان AZ في سطر واحد، على ما يقارب ثلثي عرض الشاشة. في الزاوية السفلية اليسرى، يظهر 48 عمودًا و12 صفًا.
mono20

نفس الصورة السابقة، بخط Mono 30. يظهر الحرفان AZ في سطر واحد، على كامل عرض الشاشة تقريبًا. في الزاوية السفلية اليسرى، يظهر 32 عمودًا و8 صفوف.
mono30

نفس الصورة السابقة، بخط Mono 40. يظهر فيها AX على سطر واحد، يمتد على عرض الشاشة. في الزاوية السفلية اليسرى، يظهر 24 عمودًا و6 صفوف.
mono40

نفس الصورة السابقة، بخط Mono 60. تُظهر AP على سطر واحد، يمتد على عرض الشاشة. في الأسفل، يُشير إلى 16 عمودًا و4 صفوف.
mono60

نفس الصورة السابقة، بخط Prop 20. تُظهر AZ على سطر واحد، على ما يقارب ثلثي عرض الشاشة. في الزاوية السفلية اليسرى، يظهر 48 عمودًا و12 صفًا.
prop20

نفس الصورة السابقة، بخط Prop 30. تُظهر AZ على سطر واحد، يمتد على عرض الشاشة تقريبًا. في الزاوية السفلية اليسرى، كُتب 32 عمودًا و8 صفوف.
prop30

نفس الصورة السابقة، بخط Prop 40. تُظهر AU على سطر واحد، يمتد على عرض الشاشة. في الزاوية السفلية اليسرى، كُتب 24 عمودًا و6 صفوف.
prop40

نفس الصورة السابقة، بخط Prop 60. يظهر فيها AN على سطر واحد، يمتد على عرض الشاشة. في الأسفل، يظهر 15 عمودًا و4 صفوف.
prop60

نفس الصورة السابقة، بخط CJK 16. يظهر الحرفان AZ في سطر واحد، ويشغلان حوالي ثلثي الشاشة. أما الأسطر اللاحقة فتقرأ VEXcode بالصينية المبسطة، والصينية التقليدية، والكورية، واليابانية. وفي الأسفل يظهر 43 عمودًا و12 صفًا.
fontType::cjk16

Return Values

هذه الدالة لا تُرجع قيمة.

Examples
// Print larger text
Brain.Screen.setFont(mono40);
Brain.Screen.print("VEX");

لقطة شاشة لشاشة V5 Brain تُظهر نصًا أبيض مكتوبًا عليه VEX بخط أكبر من الخط الافتراضي، في الزاوية العلوية اليسرى.


// Print in Chinese
Brain.Screen.setFont(fontType::cjk16);
Brain.Screen.print("VEX机器人");

لقطة شاشة لشاشة V5 Brain تُظهر النص "VEX机器人" بالخط الصيني في الزاوية العلوية اليسرى.

setPenWidth#

يحدد سمك الخطوط المرسومة ومخططات الأشكال.

Available Functions
void setPenWidth(
  uint32_t width );

Parameters

المعلمة

يكتب

وصف

width

uint32_t

عرض القلم، بالبكسل، من 0 إلى 32.

Return Values

هذه الدالة لا تُرجع قيمة.

Notes Examples
// Draw a rectangle with a pen width of 10
Brain.Screen.setPenWidth(10);
Brain.Screen.drawRectangle(50, 50, 130, 60);

لقطة شاشة لجهاز V5 Brain تُظهر مستطيلاً ذا حدود سميكة مطبوعًا في الربع العلوي الأيسر من الشاشة.

setPenColor#

يحدد لون النص، والبكسلات، والخطوط، ومخططات الأشكال.

Available Functions

1 — يحدد لون القلم باستخدام كائن لون محدد مسبقًا أو لون مخصص.

void setPenColor(
    const color& color );

2 — يحدد لون القلم باستخدام قيمة لون سداسية عشرية.

void setPenColor(
    const char* color );

3 — يحدد لون القلم باستخدام قيمة اللون.

void setPenColor(
    int hue );

Parameters

المعلمة

يكتب

وصف

color

const color&

Sets the pen color using a color object. Predefined colors include:

  • black
  • white
  • red
  • green
  • blue
  • yellow
  • orange
  • purple
  • cyan
  • transparent

color

const char*

يحدد لون القلم باستخدام قيمة لون سداسية عشرية ممثلة كسلسلة نصية (على سبيل المثال، “#FF0000”).

hue

int

يحدد لون القلم باستخدام قيمة لونية صحيحة في النطاق 0–359، والتي تمثل درجات حول عجلة الألوان (على سبيل المثال، 0 هو أحمر، 120 هو أخضر، و 240 هو أزرق).

Return Values

هذه الدالة لا تُرجع قيمة.

Notes
  • لون القلم الافتراضي في بداية المشروع هو white.

  • يتم استخدام لون القلم لتحديد الخطوط العريضة للأشكال (مثل drawCircle أو drawRectangle)، والنصوص والإخراج الرقمي (مع print و printAt)، ورسم وحدات البكسل الفردية باستخدام drawPixel.

  • تعتمد قيمة المعلمة hue على عجلة ألوان دائرية، كما هو موضح أدناه، حيث تمثل القيم درجات حول العجلة (على سبيل المثال، الأحمر بالقرب من 0 درجة، والأخضر بالقرب من 120 درجة، والأزرق بالقرب من 240 درجة).

عجلة ألوان توضح نطاق الألوان من 0 إلى 359، حيث الأحمر هو 0، والأخضر هو 120، والأزرق هو 240.

Examples
// Draw a rectangle with orange borders
Brain.Screen.setPenColor(orange);
Brain.Screen.drawRectangle(50, 50, 130, 60);

لقطة شاشة من جهاز V5 Brain تُظهر مستطيلاً مرسوماً باللون البرتقالي في الربع العلوي الأيسر من الشاشة.

setFillColor#

يحدد لون التعبئة المستخدم عند رسم الأشكال.

Available Functions

1 — يحدد لون التعبئة باستخدام كائن لون محدد مسبقًا أو لون مخصص.

void setFillColor(
    const color& color );

2 — يحدد لون التعبئة باستخدام قيمة لون سداسية عشرية.

void setFillColor(
    const char* color );

3 — يحدد لون التعبئة باستخدام قيمة درجة اللون.

void setFillColor(
    int hue );

Parameters

المعلمة

يكتب

وصف

color

const color&

Sets the fill color using a color object. Predefined colors include:

  • black
  • white
  • red
  • green
  • blue
  • yellow
  • orange
  • purple
  • cyan
  • transparent

color

const char*

يحدد لون التعبئة باستخدام قيمة لون سداسية عشرية ممثلة كسلسلة نصية (على سبيل المثال، “#00FF00”).

hue

int

يحدد لون التعبئة باستخدام قيمة لونية صحيحة في النطاق 0–359، والتي تمثل درجات حول عجلة الألوان (على سبيل المثال، 0 هو أحمر، 120 هو أخضر، و 240 هو أزرق).

Return Values

هذه الدالة لا تُرجع قيمة.

Notes
  • لون التعبئة الافتراضي في بداية المشروع هو black.

  • يتم استخدام لون التعبئة للداخل في الأشكال (مثل drawCircle أو drawRectangle).

  • يتم استخدام لون التعبئة كلون خلفية للنص المطبوع (كما هو الحال مع print و printAt).

    • إذا تم استخدام transparent مع نص مطبوع، فستكون الخلفية black.

  • تعتمد قيمة المعلمة hue على عجلة ألوان دائرية، كما هو موضح أدناه، حيث تمثل القيم درجات حول العجلة (على سبيل المثال، الأحمر بالقرب من 0 درجة، والأخضر بالقرب من 120 درجة، والأزرق بالقرب من 240 درجة).

عجلة ألوان توضح نطاق الألوان من 0 إلى 359، حيث الأحمر هو 0، والأخضر هو 120، والأزرق هو 240.

Examples
// Draw a rectangle filled with purple
  Brain.Screen.setFillColor(purple);
  Brain.Screen.drawRectangle(50, 100, 130, 60);

لقطة شاشة من شاشة V5 Brain تُظهر مستطيلاً مملوءًا باللون الأرجواني في الربع السفلي الأيسر من الشاشة.

setOrigin#

يحدد نقطة الأصل المستخدمة للرسم والطباعة القائمة على الإحداثيات على شاشة الدماغ.

Available Functions
void setOrigin(
  int32_t x,
  int32_t y );

Parameters

المعلمة

يكتب

وصف

x

int32_t

موضع نقطة الأصل على المحور السيني بالنسبة للزاوية العلوية اليسرى من شاشة الدماغ من 0 إلى 479.

y

int32_t

موضع الأصل على المحور الصادي بالنسبة للزاوية العلوية اليسرى لشاشة الدماغ من 0 إلى 239.

Return Values

هذه الدالة لا تُرجع قيمة.

Notes
  • الأصل الافتراضي هو الزاوية العلوية اليسرى للشاشة عند الإحداثيات (0، 0).

  • ينطبق الأصل على وظائف الإحداثيات مثل drawLine, drawRectangle, drawCircle, و printAt.

  • يظل الأصل ساري المفعول حتى يتم تغييره مرة أخرى أو إعادة ضبط المشروع.

setClipRegion#

يُحدد هذا الخيار منطقة مستطيلة على الشاشة حيث سيتم حصر جميع الرسومات والنصوص. ولن يتم عرض أي محتوى خارج هذه المنطقة.

Available Functions
void setClipRegion(
  int x,
  int y,
  int width,
  int height );

Parameters

المعلمة

يكتب

وصف

x

int

إحداثيات x للزاوية العلوية اليسرى لمنطقة القص، معطاة كعدد صحيح من 0 إلى 479.

y

int

إحداثيات y للزاوية العلوية اليسرى لمنطقة القص، معطاة كعدد صحيح من 0 إلى 239.

width

int

عرض منطقة القص بالبكسل، معطاة كعدد صحيح من 0 إلى 479.

height

int

ارتفاع منطقة القص بالبكسل، معطاة كعدد صحيح من 0 إلى 239.

Return Values

هذه الدالة لا تُرجع قيمة.

Notes
  • تستمر وظائف الرسم في التنفيذ حتى لو كانت خارج منطقة القص، ولكن الجزء الموجود داخل المنطقة فقط هو المرئي.

  • الإحداثيات x و y نسبية إلى أصل الشاشة الحالي، والذي يمكن تغييره باستخدام setOrigin.

  • ينطبق نطاق القص فقط على الخيط الحالي.

  • يؤدي تعيين منطقة قص جديدة إلى استبدال أي منطقة قص تم تعيينها مسبقًا للخيط الحالي.

Examples
// Restrict text and drawings to a specific region
Brain.Screen.setClipRegion(0, 0, 120, 120);
Brain.Screen.drawRectangle(60, 60, 100, 100, red);
Brain.Screen.printAt(60, 60, "Cut off!");

لقطة شاشة لشاشة V5 Brain مع نص أبيض مكتوب عليه "Cut of" مع مربع أحمر صلب أسفله مباشرة في الربع العلوي الأيسر، مما يعكس ما هو مطبوع داخل منطقة القطع.

drawPixel#

يرسم بكسل واحد على شاشة V5 Brain في موقع البكسل المحدد x و y.

Available Functions
void drawPixel(
  int x,
  int y );

Parameters

المعلمة

يكتب

وصف

x

int

إحداثي x حيث سيتم رسم البكسل، معطاة كعدد صحيح من 0 إلى 479.

y

int

إحداثي y حيث سيتم رسم البكسل، معطاة كعدد صحيح من 0 إلى 239.

Return Values

هذه الدالة لا تُرجع قيمة.

Notes
  • يتم رسم البكسلات باستخدام لون القلم الحالي المحدد بواسطة setPenColor.

  • الإحداثيات x و y نسبية إلى أصل الشاشة الحالي، والذي يمكن تعيينه باستخدام setOrigin.

  • إذا كان موقع البكسل المحدد خارج حدود الشاشة، فلن يتم رسم البكسل.

Examples
// Draw the pixels marking the corners of a square
Brain.Screen.drawPixel(250, 100);
Brain.Screen.drawPixel(275, 100);
Brain.Screen.drawPixel(250, 125);
Brain.Screen.drawPixel(275, 125);

لقطة شاشة من جهاز V5 Brain تُظهر مجموعة متنوعة من البكسلات التي تُشير إلى زوايا مربع بالقرب من مركز الشاشة.

drawLine#

يرسم خطًا مستقيمًا يصل بين نقطتين على شاشة V5 Brain.

Available Functions
void drawLine(
  int x1,
  int y1,
  int x2,
  int y2 );

Parameters

المعلمة

يكتب

وصف

x1

int

إحداثي البداية للخط على المحور السيني، معطاة كعدد صحيح من 0 إلى 479.

y1

int

إحداثي y الابتدائي للخط، معطاة كعدد صحيح من 0 إلى 239.

x2

int

إحداثي س النهائي للخط، معطاة كعدد صحيح من 0 إلى 479.

y2

int

إحداثي الصادات النهائي للخط، معطاة كعدد صحيح من 0 إلى 239.

Return Values

هذه الدالة لا تُرجع قيمة.

Notes
  • يتم رسم الخطوط باستخدام لون القلم الحالي المحدد بواسطة setPenColor.

  • يتم تحديد عرض الخط بواسطة عرض القلم الحالي المحدد بواسطة setPenWidth.

  • الإحداثيات x و y نسبية إلى أصل الشاشة الحالي، والذي يمكن تعيينه باستخدام setOrigin.

  • إذا كان أي جزء من الخط يقع خارج حدود الشاشة، فسيتم رسم الجزء المرئي فقط.

Examples
// Draw a line from the top left to bottom right of the screen
Brain.Screen.drawLine(0, 0, 479, 239);

تُظهر لقطة شاشة لجهاز V5 Brain خطًا قطريًا رفيعًا عبر المنتصف، من الزاوية العلوية اليسرى إلى الزاوية السفلية اليمنى.

drawRectangle#

يرسم مستطيلاً على شاشة V5 Brain في الموضع والحجم المحددين.

Available Functions

1 — يرسم ويملأ مستطيلاً باستخدام لون التعبئة.

void drawRectangle(
    int x,
    int y,
    int width,
    int height );

2 — يرسم ويملأ مستطيلاً باستخدام كائن لون محدد مسبقًا أو لون مخصص.

void drawRectangle(
    int           x,
    int           y,
    int           width,
    int           height,
    const color&  color );

3 — يرسم ويملأ مستطيلاً باستخدام قيمة لون سداسية عشرية.

void drawRectangle(
    int           x,
    int           y,
    int           width,
    int           height,
    const char*   color );

4 — يرسم ويملأ مستطيلاً باستخدام قيمة لونية.

void drawRectangle(
    int x,
    int y,
    int width,
    int height,
    int hue );

Parameters

المعلمة

يكتب

وصف

x

int

الإحداثي السيني للزاوية العلوية اليسرى للمستطيل، معطاة كعدد صحيح من 0 إلى 479.

y

int

إحداثي y للزاوية العلوية اليسرى للمستطيل، معطاة كعدد صحيح من 0 إلى 239.

width

int

عرض المستطيل، معطاة كعدد صحيح من 0 إلى 479.

height

int

ارتفاع المستطيل، معبر عنه كعدد صحيح من 0 إلى 239.

color

const color&

Fills the rectangle using a color object. Predefined colors include:

  • black
  • white
  • red
  • green
  • blue
  • yellow
  • orange
  • purple
  • cyan
  • transparent
This can also use a custom color object.

color

const char*

يملأ المستطيل باستخدام قيمة لون سداسية عشرية (على سبيل المثال، “#FF0000”).

hue

int

يملأ المستطيل باستخدام قيمة لونية في النطاق 0–359.

Return Values

هذه الدالة لا تُرجع قيمة.

Notes
  • يتم رسم مخطط المستطيل باستخدام لون القلم الحالي المحدد بواسطة setPenColor.

  • يتم تحديد سمك الخط الخارجي بواسطة عرض القلم الحالي المحدد بواسطة setPenWidth.

  • عندما لا يتم توفير معلمة اللون color ، يتم ملء الجزء الداخلي من المستطيل باستخدام لون التعبئة الحالي المحدد بواسطة setFillColor.

  • الإحداثيات x و y نسبية إلى أصل الشاشة الحالي، والذي يمكن تغييره باستخدام setOrigin.

  • إذا كان أي جزء من المستطيل يقع خارج حدود الشاشة، فسيتم رسم الجزء المرئي فقط.

  • تعتمد قيمة المعلمة hue على عجلة ألوان دائرية، كما هو موضح أدناه، حيث تمثل القيم درجات حول العجلة (على سبيل المثال، الأحمر بالقرب من 0 درجة، والأخضر بالقرب من 120 درجة، والأزرق بالقرب من 240 درجة).

عجلة ألوان توضح نطاق الألوان من 0 إلى 359، حيث الأحمر هو 0، والأخضر هو 120، والأزرق هو 240.

Examples
// Draw a rectangle on the screen
Brain.Screen.drawRectangle(50, 50, 130, 60);

تُظهر لقطة شاشة لجهاز V5 Brain مستطيلاً ذا إطار أبيض رفيع مطبوع في الربع العلوي الأيسر.

drawCircle#

يرسم دائرة على شاشة V5 Brain في الموضع ونصف القطر المحددين.

Available Functions

1 — يرسم ويملأ دائرة باستخدام لون التعبئة.

void drawCircle(
    int x,
    int y,
    int radius );

2 — يرسم ويملأ دائرة باستخدام كائن لون محدد مسبقًا أو لون مخصص.

void drawCircle(
    int           x,
    int           y,
    int           radius,
    const color&  color );

3 — يرسم ويملأ دائرة باستخدام قيمة لونية سداسية عشرية.

void drawCircle(
    int           x,
    int           y,
    int           radius,
    const char*   color );

4 — يرسم ويملأ دائرة باستخدام قيمة لونية.

void drawCircle(
    int x,
    int y,
    int radius,
    int hue );

Parameters

المعلمة

يكتب

وصف

x

int

الإحداثي السيني لمركز الدائرة، معطاة كعدد صحيح من 0 إلى 479.

y

int

إحداثي y لمركز الدائرة، معطاة كعدد صحيح من 0 إلى 239.

radius

int

نصف قطر الدائرة، معطاة كعدد صحيح من 0 إلى 239 بكسل.

color

const color&

Fills the circle using a color object. Predefined colors include:

  • black
  • white
  • red
  • green
  • blue
  • yellow
  • orange
  • purple
  • cyan
  • transparent
This can also use a custom color object.

color

const char*

يملأ الدائرة باستخدام قيمة لون سداسية عشرية (على سبيل المثال، “#FF0000”).

hue

int

يملأ الدائرة باستخدام قيمة لونية في النطاق 0–359.

Return Values

هذه الدالة لا تُرجع قيمة.

Notes
  • يتم رسم مخطط الدائرة باستخدام لون القلم الحالي المحدد بواسطة setPenColor.

  • يتم تحديد سمك الخط الخارجي بواسطة عرض القلم الحالي المحدد بواسطة setPenWidth.

  • عندما لا يتم توفير معلمة اللون color ، يتم ملء الجزء الداخلي للدائرة باستخدام لون التعبئة الحالي المحدد بواسطة setFillColor.

  • الإحداثيات x و y نسبية إلى أصل الشاشة الحالي، والذي يمكن تغييره باستخدام setOrigin.

  • تعتمد قيمة المعلمة hue على عجلة ألوان دائرية، كما هو موضح أدناه، حيث تمثل القيم درجات حول العجلة (على سبيل المثال، الأحمر بالقرب من 0 درجة، والأخضر بالقرب من 120 درجة، والأزرق بالقرب من 240 درجة).

عجلة ألوان توضح نطاق الألوان من 0 إلى 359، حيث الأحمر هو 0، والأخضر هو 120، والأزرق هو 240.

Examples
// Draw a circle on the screen
Brain.Screen.drawCircle(240, 120, 40);

لقطة شاشة من جهاز V5 Brain تُظهر دائرة ذات إطار أبيض رفيع مرسوم في المنتصف.

drawImageFromFile#

يرسم صورة على شاشة V5 Brain باستخدام ملف صورة مخزن على بطاقة SD.

Available Functions
bool drawImageFromFile(
  const char* name,
  int x,
  int y );

Parameters

المعلمة

يكتب

وصف

name

const char*

The filename of the image on the SD card. The file must have a .bmp or .png extension.

x

int

الإحداثي السيني، بالبكسل من 0 إلى 479، الذي سيتم عنده رسم الحافة اليسرى للصورة.

y

int

إحداثيات y، بالبكسل من 0 إلى 239، التي سيتم عندها رسم الحافة العلوية للصورة.

Return Values

تُرجع هذه الدالة قيمة منطقية تُشير إلى ما إذا تم رسم الصورة بنجاح:

  • true — تم تحميل الصورة ورسمها على الشاشة بنجاح.
  • false — تعذر رسم الصورة (على سبيل المثال، إذا كان الملف غير موجود أو غير صالح).

Notes
  • تنسيقات الصور المدعومة هي .bmp و .png.

  • يجب ألا يتجاوز حجم ملف الصورة 512 KB.

    • يُنصح باستخدام ترميز RLE ذي 8 بت لتقليل حجم الملف.

  • أقصى أبعاد الصورة المدعومة هي حجم شاشة الدماغ (حوالي 479 × 239 بكسل).

  • الإحداثيات x و y نسبية إلى أصل الشاشة الحالي، والذي يمكن تغييره باستخدام setOrigin.

Examples
// Draw a bmp file on the Brain's screen at coordinate 0, 0
Brain.Screen.drawImageFromFile("test_image.bmp", 0, 0);

render#

يُفعّل هذا الخيار التخزين المؤقت المزدوج لشاشة الدماغ. بمجرد استدعائه، لن تظهر أي وظائف رسم (مثل النصوص والأشكال والصور) فورًا لبقية المشروع. بدلًا من ذلك، لن تظهر التحديثات إلا عند استخدام الأمر render مرة أخرى. يتيح هذا تحديثات أكثر سلاسة وتحكمًا للشاشة، ولكنه يعني أيضًا أنه لن يكون أي شيء مرئيًا حتى يتم استخدام الأمر render.

Available Functions

1 — يُمكّن التخزين المؤقت المزدوج أو يعرض المخزن المؤقت الخلفي على الشاشة.

bool render();

2 — يعرض المخزن المؤقت الخلفي على الشاشة مع التحكم في سلوك المزامنة الرأسية وتنفيذ الجدولة الاختياري.

bool render(
    bool bVsyncWait,
    bool bRunScheduler = true );

Parameters

المعلمة

يكتب

وصف

bVsyncWait

bool

​

  • true — انتظر حتى يتم تحديث الشاشة عموديًا قبل العرض لتقليل التقطيع البصري.
  • false — لا تنتظر تحديث الشاشة عموديًا قبل العرض.

bRunScheduler

bool

اختياري.

  • true (افتراضي) — السماح بتشغيل المهام في الخلفية أثناء انتظار العرض.
  • false — عدم السماح بتشغيل المهام في الخلفية أثناء انتظار العرض.

Return Values

تُرجع هذه الدالة قيمة منطقية تُشير إلى ما إذا كانت الرسومات المحفوظة في المخزن المؤقت قد عُرضت بنجاح على الشاشة:

  • true — عُرضت الرسومات بنجاح على الشاشة.
  • false — لم يتم عرض الرسومات على الشاشة.
  • Notes
    • إن استدعاء render سيتطلب استخدام render لبقية المشروع.

    Examples
    Brain.Screen.render();
    
    // Draw text to the back buffer
    Brain.Screen.print("Render later...");
    
    // Wait for a screen press to render drawings
    while (!Brain.Screen.pressing()) {
      wait(20, msec);
    }
    Brain.Screen.render();
    
    

pressing#

تقارير حول ما إذا كان يتم الضغط حاليًا على شاشة V5 Brain.

Available Functions
bool pressing();

Parameters

لا تقبل هذه الدالة أي معلمات.

Return Values

تُرجع هذه الدالة قيمة منطقية تُشير إلى حالة الضغط الحالية على الشاشة:true — الشاشة قيد الضغط حاليًا. أو false — الشاشة غير قيد الضغط.

Examples
// Change the screen's color after it's pressed
while (Brain.Screen.pressing() == false) {
  wait(5, msec);
}

Brain.Screen.setFillColor(green);
Brain.Screen.drawRectangle(0, 0, 479, 239);


// Display different messages after the screen is pressed
while (!Brain.Screen.pressing()) {
  wait(5, msec);
}
Brain.Screen.print("First message!");
Brain.Screen.newLine();

// Lift finger to press the screen again
while (Brain.Screen.pressing()) {
  wait(5, msec);
}
while (Brain.Screen.pressing() == false) {
  wait(5, msec);
}
Brain.Screen.print("Second message!");
Brain.Screen.newLine();

xPosition#

يُعيد إحداثيات س لآخر ضغطة على شاشة V5 Brain.

Available Functions
int32_t xPosition();

Parameters

لا تقبل هذه الدالة أي معلمات.

Return Values

تُرجع قيمة int32_t تمثل الإحداثي السيني، بالبكسل من 0 إلى 479، لآخر ضغطة على الشاشة.

Examples
// Display a circle where the screen is pressed
while (Brain.Screen.pressing() == false) {
  wait(5, msec);
}

Brain.Screen.drawCircle(Brain.Screen.xPosition(), Brain.Screen.yPosition(), 20, white);

yPosition#

يعيد إحداثيات y لآخر ضغطة على شاشة V5 Brain.

Available Functions
int32_t yPosition();

Parameters

لا تقبل هذه الدالة أي معلمات.

Return Values

تُرجع هذه الدالة قيمة int32_t تمثل الإحداثي y، بالبكسل من 0 إلى 239، لآخر ضغطة على الشاشة.

Examples
// Display a circle where the screen is pressed
while (Brain.Screen.pressing() == false) {
  wait(5, msec);
}

Brain.Screen.drawCircle(Brain.Screen.xPosition(), Brain.Screen.yPosition(), 20, white);

pressed#

يسجل وظيفة ليتم استدعاؤها عند الضغط على شاشة V5 Brain.

Available Functions

1 — يستدعي دالة عند الضغط على الشاشة.

void pressed(
    void (*callback)(void)
);

2 — يستدعي دالة عند الضغط على الشاشة ويمرر وسيطة محددة من قبل المستخدم إلى دالة الاستدعاء.

void pressed(
    void (*callback)(void*),
    void* arg );

Parameters

المعلمة

يكتب

وصف

callback

void (*)(void)

دالة يتم استدعاؤها عند الضغط على الشاشة.

callback

void ()(void)

دالة يتم استدعاؤها عند الضغط على الشاشة وتستقبل وسيطة محددة من قبل المستخدم.

arg

void*

قيمة يحددها المستخدم ويتم تمريرها إلى دالة الاستدعاء عند الضغط على الشاشة.

Return Values

هذه الدالة لا تُرجع قيمة.

Notes
  • يتم تنفيذ وظيفة الاستدعاء في كل مرة يتم فيها الضغط على شاشة الدماغ.

  • لا يمكن تسجيل سوى دالة رد نداء واحدة في كل مرة؛ استدعاء pressed مرة أخرى يحل محل دالة رد النداء السابقة.

  • يجب أن تُرجع دالة الاستدعاء القيمة void.

Examples

عرّف دالة الاستدعاء (خارج نطاق int main())

// Tracks how many times the screen is pressed.
void onScreenPressed(void* arg) {
  int* count = (int*)arg;
  (*count)++;

  Brain.Screen.clearScreen();
  Brain.Screen.setCursor(1, 1);
  Brain.Screen.print("Pressed %d times", *count);
}

قم بتسجيل دالة الاستدعاء داخل الدالة الرئيسية int main()

int main() {
  int pressCount = 0;

  // Register the callback and pass a value to update.
  Brain.Screen.pressed(onScreenPressed, &pressCount);

  while (true) {
    wait(20, msec);
  }
}

released#

يسجل وظيفة ليتم استدعاؤها عند تحرير شاشة V5 Brain بعد الضغط عليها.

Available Functions

1 — يستدعي دالة عند تحرير الشاشة بعد الضغط عليها.

void released(
    void (*callback)(void)
);

2 — يستدعي دالة عند تحرير الشاشة بعد الضغط عليها ويمرر وسيطة محددة من قبل المستخدم إلى دالة الاستدعاء.

void released(
    void (*callback)(void*),
    void* arg );

Parameters

المعلمة

يكتب

وصف

callback

void (*)(void)

دالة يتم استدعاؤها عند تحرير الشاشة بعد الضغط عليها.

callback

void ()(void)

دالة يتم استدعاؤها عند تحرير الشاشة بعد الضغط عليها وتستقبل وسيطة محددة من قبل المستخدم.

arg

void*

قيمة يحددها المستخدم ويتم تمريرها إلى دالة الاستدعاء عند تحرير الشاشة بعد الضغط عليها.

Return Values

هذه الدالة لا تُرجع قيمة.

Notes
  • يتم تنفيذ وظيفة الاستدعاء في كل مرة يتم فيها تحرير شاشة الدماغ بعد الضغط عليها.

  • لا يمكن تسجيل سوى دالة رد نداء واحدة في كل مرة؛ استدعاء released مرة أخرى يحل محل دالة رد النداء السابقة.

  • يجب أن تُرجع دالة الاستدعاء القيمة void.

Examples

عرّف دالة الاستدعاء (خارج نطاق int main())

// Tracks how many times the screen is released.
void onScreenReleased(void* arg) {
  int* count = (int*)arg;
  (*count)++;

  Brain.Screen.clearScreen();
  Brain.Screen.setCursor(1, 1);
  Brain.Screen.print("Released %d times", *count);
}

قم بتسجيل دالة الاستدعاء داخل الدالة الرئيسية int main()

int main() {
  int releaseCount = 0;

  // Register the callback and pass a value to update.
  Brain.Screen.released(onScreenReleased, &releaseCount);

  while (true) {
    wait(20, msec);
  }
}