Графические объекты описание структур данных графических объектов

## Описание

В Scilab'е графическое окно и рисование его содержимого представлены иерархическими объектами. Верхний уровень иерархии - это `Figure` ("Окно"). Каждое окно `Figure` определяет по меньшей мере одного потомка типа `Axes` ("оси"). Каждый объект осей `Axes` содержит набор листовых объектов, которые являются основными графическими объектами такими, как `Polylines` ("ломанные линии"), `Rectangles` ("прямоугольники"), `Arcs` ("дуги"), `Segs` ("сегменты"),... Он может также содержать составной тип `Compound`, который является рекурсивным набором объектов. Главный интерес графического режима заключается в том, чтобы сделать обмен свойствами проще. Этот графический режим обеспечивает набор графических функций высокого уровня (см. set, get), используемых для управления свойствами объектов, такими, как данные, координаты и масштабирование, цвет и вид без необходимости повторять команды инициализации графики.

Графические объекты связаны с переменными Scilab'а типа `handle` ("дескриптор"). Дескриптор - это уникальный идентификатор, который связан с каждым образцом созданного графического объекта. Используя этот дескриптор, можно добраться до свойств объекта через функции `set` и `get`. Дескрипторы также используются для манипулирования графическими объектами, чтобы двигать, копировать или удалять их.

Командное окно, кореневой объект, мышь:

  По своим меню командное окно может рассматриваться как специальное графическое окно. К своим меню и некоторым графическим метанастройкам можно обращаться через их указатели, которые возращаются `c=get(0)`. См. подробности в Свойства командного окна.

  Корневой объект является виртуальным графическим объектом, используемым для получения свойств экрана компьютера. Его указатель тот же, что у командного окна: `r=get(0)`, но к свойствам экрана можно обращаться только в режиме чтения. См. подробности в Свойства корневого объекта.

  В Windows, можно получить некоторые дополнительные параметры экрана, окна и мыши через функцию getsystemmetrics.

Figure:

  Объект графического окна `Figure` - это верхний уровень иерархии графических объектов. Этот объект определяет параметры собственно графического окна, а также значения по умолчанию параметров при создании потомков. Потомки графического окна являются объектами осей `Axes`.

  Дескриптор текущего графического окна (графического окна, используемого для построения графиков) может быть получен с помощью `get("current_figure")` и он может быть установлен с помощью `set("current_figure",h)`, где `h` - это или дескриптор графического окна, или `figure_id`. В последнем случае, если графическое окно ещё не существует, то оно будет создано.

  См. подробности в свойствах графического окна.

Axes:

  Объект осей The `Axes` - это второй уровень иерархии графических объектов. Этот объект определяет параметры для изменения координат и рисования осей, а также значений по умолчанию параметров для создания его потомков. См. подробности в свойствах осей. Дескриптор текущих осей `Axes` может быть получен с помощью `get("current_axes")`.

Compound:

  Составной объект `Compound` - это просто вектор потомков и с единственным свойством (свойство видимости). Он используется для склеивания набора объектов вместе.

  См. функции glue, unglue и свойства составного объекта Compound .

Axis:

  Объект оси `Axis` - это лист иерархии графических объектов. Этот объект определяет параметры для масштабирования и вида осей.

  См. подробности в свойствах оси.

Polyline:

  Объект ломаной линии `Polyline` - это лист иерархии графических объектов. Он определяет двумерные и трёхмерные ломаные линии и свойства рисования продолжения ломаных линий.

  См. подробности в свойствах ломаных линий.

Arc:

  Объект дуги `Arc` - это лист иерархии графических объектов. Этот объект определяет параметры эллипсов и части эллипсов.

  См. подробности в свойствах дуги.

Rectangle:

  Объект прямоугольника `Rectangle` - это лист иерархии графических объектов. Этот объект определяет параметры прямоугольников и залитых прямоугольников.

  См. подробности в свойствах прямоугольника.

Surface:

  Объект поверхности `Surface` - это лист иерархии графических объектов. У него есть подтипы `Fac3d` или `Plot3d`. Этот объект определяет параметры для графиков трёхмерной поверхности.

  См. подробности в свойствах поверхности.

Fec:

  Объект `Fec` - это лист иерархии графических объектов. Он представляет двумерные графики конечных элементов.

  См. подробности в свойствах fec.

Grayplot:

  Объект палитры серого `Grayplot` - это лист иерархии графических объектов. Он представляет двумерные графики поверхности с помощью цветов и изображений.

  См. подробности в палитре серого.

Matplot:

  Объект `Matplot` - это лист иерархии графических объектов. Он представляет двумерные графики с помощью матриц с целочисленными элементами.

  См. подробности в свойствах Matplot'а.

Segs:

  Объект сегментов `Segs` - это лист иерархии графических объектов. Этот объект определяет параметры для набора раскрашенных сегментов или раскрашенных стрелок.

  См. подробности в свойствах сегментов.

Champ:

  Объект фона `Champ` - это лист иерархии графических объектов. Этот объект определяет параметры двумерного векторного поля.

  См. подробности в свойствах фона.

Text:

  Объект текста `Text` - это лист иерархии графических объектов. Этот объект определяет параметры для рисования строк.

  См. подробности в свойствах текста.

Label:

  Объект подписи `Label` - это потомок графического объекта осей `Axes`. Этот объект определяет параметры подписей к осям x, y и z, а также названия, нарисованного в графическом окне.

  См. подробности в свойствах объекта подписи Label.

Legend:

  Объект легенды `Legend` - это лист иерархии графических объектов. Этот объект определяет параметры легенды, рисуемой ниже графиков `plot2dx`. Этот объект требует дальнейшей разработки.

  См. подробности в свойствах объекта легенды Legend.

### Другие объекты

Интерактивные компоненты (uicontrol)

  Scilab позволяет создавать графические интерактивные компоененты такие как ползунки, числовые поля, изменяемые кнопкой мыши, редактируемые таблицы, редактируемые текстовые поля в графических элементах, флажки, группы кнопок, выпадающие списки, выпадающие меню кнопки и др. Эти объекты являются прямыми потомками фигуры, в которой они определены. Их свойства могут быть установлены и настроены через их указатели как и для других графических объектов. Пожалуйста, см. подробности в uicontrol properties.

Меню пользовательского интерфейса

  uimenu() позволяет добавлять и управлять некоторыми меню на панели меню любого графического окна. `uimenu()` возвращает указатель через который можно обращаться к содержимому и свойствам созданного меню. Пожалуйста, см. подробности в uimenus properties.

## Примеры

    // Проиграйте этот пример строчку за строчкой
    // создать графическое окно в объектном режиме
    // получить дескриптор объекта Figure и распечатать его свойства
    f = scf()
    a = f.children // дескриптор потомка - осей Axes
    x = (1:10)';  plot2d(x,[x.^2 x.^1.5])
    e = a.children //Составной объект Compound двух ломаных линий

    p1 = e.children(1) // свойства последней нарисованной ломаной линии
    p1.foreground = 5; // изменение цвета ломаной линии
    e.children.thickness = 5; // изменение толщины двух ломаных линий

    delete(e.children(2))

    move(e.children,[0,30]) //перевод ломаной линии

    a.axes_bounds=[0 0 0.5 0.5];

    subplot(222) //создать новый объект осей Axes
    plot(1:10);
    a1 = f.children(1);  // получить его дескриптор
    copy(e.children,a1); // скопировать объект ломаной линии первого графика в новый объект осей Axes
    a1.data_bounds = [1 0;10 100]; //изменить пределы осей Axes

    scf(10); //создать новое графическое окно с figure_id=10
    plot3d() // график посылается в графическое окно 10
    scf(f);  // создать предыдущее графическое окно текущим
    plot2d(x,x^3)  // график посылается в первоначальное графическое окно

## Смотрите также

- set
- get
- move
- delete
- ged
- редактор объектов
- plot
- surf
- getsystemmetrics
- setlookandfeel