Экран#

Введение#

Класс screen является производным от базового класса brain. Он управляет тем, как V5 Brain отображает текст, цифры и графику на своем сенсорном экране, а также тем, как он реагирует на сенсорный ввод.

По умолчанию для печати в Brain используется шрифт моноширинный малый, имеющий 12 строк и 48 столбцов.

Для рисования разрешение мозга составляет 480 x 240 пикселей.

Экран V5 Brain с красной сеткой, показывающий расположение 12 строк и 48 столбцов. Размеры в пикселях: 479 в ширину и 239 в высоту. Верхний левый угол начинается с (0,0) пикселей и строки 1, столбца 1, а нижний правый угол заканчивается на (479, 239) пикселей и строки 12, столбца 48.

Доступ#

Доступ к классу screen можно получить следующим образом:

Brain.Screen

Примечания#

  • Объект screen предоставляется модулем Brain. Он не создается напрямую.

  • В проектах используется один глобальный объект Brain Brain , поэтому функции экрана вызываются с помощью Brain.Screen 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 — Выводит отформатированный текст, числа или логические значения на экран Brain.

  • 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 — Регистрирует функцию обратного вызова, которая будет запущена при отпускании экрана после нажатия.

Before calling any screen member functions, a brain instance must be created, as shown below:

// 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
  • Вывод начинается с позиции курсора (текущая позиция на экране).

  • В печатном тексте используется текущий экранный шрифт размер шрифта.

  • В печатном тексте используется текущий цвет пера цвет пера.

  • Текст, напечатанный с помощью параметра print всегда печатается с фоном, а цвет фона определяется текущим цветом заливки .

  • При использовании строки формата количество и типы передаваемых значений должны соответствовать спецификаторам формата в строке.

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

Скриншот V5 Brain, на котором в верхнем левом углу белым текстом написано «Привет, робот!».

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 setCursor влияет только на положение последующего текстового вывода.

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

Скриншот V5 Brain, показывающий строку 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&

Очищает строку, используя объект цвета color Предопределенные цвета включают:

  • black
  • white
  • red
  • green
  • blue
  • yellow
  • orange
  • purple
  • cyan
  • transparent
Также можно использовать объект пользовательского цвета.

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

Возвращает значение int32_t , представляющее строку, в которой будет выведен текст.

Нумерация строк начинается с 1.

Notes
  • The cursor position is based on the current screen font.

  • Возвращаемое значение указывает, где будет отображаться следующий печатный результат.

  • Значение строки изменяется при выводе текста или при вызове setCursor.

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

Скриншот экрана V5 Brain, на котором в верхнем левом квадранте экрана, в позиции 12-й строки 3-го столбца, отображается текст «3» белым цветом.

column#

Возвращает столбец, в котором будет выводиться текст на экран V5 Brain.

Available Functions
int32_t column();

Parameters

Эта функция не принимает никаких параметров.

Return Values

Возвращает значение int32_t представляющее столбец, в котором будет напечатан текст.

Нумерация столбцов начинается с 1.

Notes
  • The cursor position is based on the current screen font.

  • Возвращаемое значение указывает, где будет отображаться следующий печатный результат.

  • Значение столбца изменяется при выводе текста или при вызове setCursor.

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

Скриншот экрана V5 Brain, на котором в верхнем левом квадранте экрана, в позиции 15 в 3-й строке и 15-м столбце, отображается текст 15 белым цветом.

getStringHeight#

Возвращает высоту строки в пикселях при отображении на экране V5 Brain.

Available Functions
int32_t getStringHeight( 
    const char* cstr );

Parameters

Параметр

Тип

Описание

cstr

const char*

Текст, подлежащий измерению, предоставляется в виде строки в стиле C (например, “Hello”).

Return Values

Возвращает значение int32_t представляющее высоту строки в пикселях при отображении на экране Brain.

Notes
  • Возвращаемая высота зависит от текущего выбранного шрифта на экране .

  • Эта функция измеряет строку, не отображая её на экране.

  • Возвращаемая высота отражает то, как строка будет выглядеть при выводе на экран.

getStringWidth#

Возвращает ширину строки в пикселях при отображении на экране V5 Brain.

Available Functions
int32_t getStringWidth( 
    const char* cstr );

Parameters

Параметр

Тип

Описание

cstr

const char*

Текст, подлежащий измерению, предоставляется в виде строки в стиле C (например, “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

Координата по оси X, в которой будет производиться печать, относительно начала координат экрана.

y

int32_t

Позиция по оси Y для печати, относительно начала координат экрана.

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 с белым текстом «Центр», расположенным по центру экрана.

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&

Очищает экран, используя объект цвета color Предопределенные цвета включают:

  • black
  • white
  • red
  • green
  • blue
  • yellow
  • orange
  • purple
  • cyan
  • transparent
Также можно использовать объект пользовательского цвета.

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

Устанавливает шрифт на один из следующих вариантов:

  • mono12
  • mono15
  • mono20
  • mono30
  • mono40
  • mono60
  • prop20
  • prop30
  • prop40
  • prop60
  • fontType::cjk16 — Может печатать китайские, японские и корейские символы.
    • Упрощенный китайский — можно увидеть до 28-го столбца.
    • Традиционный китайский — можно увидеть до 28-го столбца.
    • Японский (кандзи) — можно увидеть до 28-го столбца.
    • Корейский (хангыль) — можно увидеть до 30-го столбца.
Эти варианты показаны ниже.

Скриншот экрана 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&

Задает цвет пера, используя объект цвета color Предопределенные цвета:

  • 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&

Задает цвет заливки, используя объект цвета color Предопределенные цвета:

  • 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#

Задает точку отсчета, используемую для рисования и печати на экране Brain с использованием координат.

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

Parameters

Параметр

Тип

Описание

x

int32_t

Координата начала координат по оси X относительно верхнего левого угла экрана Brain от 0 до 479.

y

int32_t

Положение начала координат по оси Y относительно верхнего левого угла экрана Brain от 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 с белым текстом «Отрезано» и сплошным красным квадратом прямо под ним в верхнем левом квадранте, отражающим то, что напечатано в области обрезки.

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

Начальная x-координата линии, заданная целым числом от 0 до 479.

y1

int

Начальная y-координата линии, заданная целым числом от 0 до 239.

x2

int

Конечная x-координата линии, заданная целым числом от 0 до 479.

y2

int

Конечная y-координата линии, заданная целым числом от 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

Координата x верхнего левого угла прямоугольника, заданная целым числом от 0 до 479.

y

int

Y-координата верхнего левого угла прямоугольника, заданная целым числом от 0 до 239.

width

int

Ширина прямоугольника, заданная целым числом от 0 до 479.

height

int

Высота прямоугольника, заданная целым числом от 0 до 239.

color

const color&

Заполняет прямоугольник, используя объект цвета color Предопределенные цвета включают:

  • black
  • white
  • red
  • green
  • blue
  • yellow
  • orange
  • purple
  • cyan
  • transparent
Также можно использовать объект пользовательского цвета.

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

Координата x центра окружности, заданная целым числом от 0 до 479.

y

int

Y-координата центра окружности, заданная целым числом от 0 до 239.

radius

int

Радиус окружности, заданный целым числом от 0 до 239 пикселей.

color

const color&

Заполняет круг, используя объект цвета color Предопределенные цвета включают:

  • black
  • white
  • red
  • green
  • blue
  • yellow
  • orange
  • purple
  • cyan
  • transparent
Также можно использовать объект пользовательского цвета.

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*

Имя файла изображения на SD-карте. Файл должен иметь расширение .bmp или .png.

x

int

Координата x в пикселях от 0 до 479, по которой будет отображаться левый край изображения.

y

int

Y-координата в пикселях от 0 до 239, по которой будет нарисован верхний край изображения.

Return Values

Возвращает логическое значение, указывающее, было ли изображение успешно отрисовано:

  • true — Изображение было успешно загружено и отрисовано на экране.
  • false — Изображение не удалось отрисовать (например, если файл не существует или недействителен).

Notes
  • Поддерживаемые форматы изображений: .bmp и .png.

  • Размер файла изображения не должен превышать 512 KB.

    • Для минимизации размера файла рекомендуется использовать 8-битное кодирование RLE.

  • Максимально поддерживаемые размеры изображения соответствуют размеру экрана Brain (приблизительно 479 x 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#

Включает двойную буферизацию для экрана Brain. После вызова любые функции рисования (например, текст, фигуры или изображения) больше не будут отображаться немедленно до конца проекта. Вместо этого обновления будут отображаться только при повторном использовании рендеринга 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#

Возвращает координату x последнего нажатия на экране V5 Brain.

Available Functions
int32_t xPosition();

Parameters

Эта функция не принимает никаких параметров.

Return Values

Возвращает значение типа int32_t, int32_t представляющее собой координату x в пикселях от 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
  • Функция обратного вызова выполняется каждый раз при нажатии на экран Brain.

  • Одновременно можно зарегистрировать только одну функцию обратного вызова; вызов функции 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
  • Функция обратного вызова выполняется каждый раз, когда экран Brain отпускается после нажатия.

  • Одновременно можно зарегистрировать только одну функцию обратного вызова; вызов функции 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);
  }
}