# canvas

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

## СИНТАКСИС

          canvas имяПути параметры

## СТАНДАРТНЫЕ ПАРАМЕТРЫ

-background | -highlightthickness | -insertwidth
-takefocus | -borderwidth | -insertbackground
-relief | -xscrollcommand | -cursor
-insertborderwidth | -selectbackground | -yscrollcommand
-highlightbackground | -insertofftime | -selectborderwidth
-highlightcolor | -insertontime | -selectforeground

Подробное описание параметров приведено в разделе options.

## ПАРАМЕТРЫ, СВЯЗАННЫЕ ИСКЛЮЧИТЕЛЬНО С ПРИМИТИВАМИ

Имя параметра: | -closeenough
Имя в Базе: | closeEnough
Класс в Базе: | CloseEnough

Задает значение с плавающей точкой, указывающее расстояние от курсора до объекта на экране, при котором курсор считается находящимся внутри объекта. По умолчанию имеет значение 1.0

Имя параметра: | -confine
Имя в Базе: | confine
Класс в Базе: | Confine

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

Имя параметра: | -height
Имя в Базе: | height
Класс в Базе: | Height

Задает желаемую высоту окна, которое примитив канвы должен запросить у своего графического менеджера. Значение может иметь любой вид из описанных ниже (см. "Координаты").

Имя параметра: | -scrollregion
Имя в Базе: | scrollRegion
Класс в Базе: | ScrollRegion

Задает список из четырех величин, описывающих координаты левой, верхней, правой и нижней границы прямоугольной области. Эта область используется для прокрутки и считается границей информации в канве. Каждая из координат может иметь любой вид из описанных ниже в (см. "Координаты").

Имя параметра: | -width
Имя в Базе: | width
Класс в Базе: | width

Задает желаемую ширину окна, которое примитив канвы должен запросить у своего графического менеджера. Значение может иметь любой вид из описанных ниже (см. Координаты).

Имя параметра: | -xscrollincrement
Имя в Базе: | xScrollincrement
Класс в Базе: | Scrollincrement

Задает шаг горизонтальной прокрутки в любом из принятых видов для расстояний на экране. Если указанная величина положительна, то x-координата левой границы будет выбрана пропорциональной значению xScrollincrement с четным коэффициентом пропорциональности. Кроме того, шаг прокрутки (при нажатии на стрелки влево и вправо полосы прокрутки) также принимает значение xScrollincrement. Если значение параметра не положительно, то прокрутка выполняется без ограничений.

Имя параметра: | -yscrollincrement
Имя в Базе: | yScrollincrement
Класс в Базе: | Scrollincrement

Задает шаг вертикальной прокрутки в любом из принятых видов для расстояний на экране. Если указанная величина положительна, то y-координата верхней границы будет выбрана пропорциональной значению yScrollincrement с четным коэффициентом пропорциональности. Кроме того, шаг прокрутки (при нажатии на стрелки вверх и вниз полосы прокрутки) также принимает значение yScrollincrement. Если значение параметра не положительно, то прокрутка выполняется без ограничений.

## ВВЕДЕНИЕ

Команда canvas создает новое окно (заданное аргументом имяПути) и преобразует его в примитив канвы. С помощью описанных выше дополнительных аргументов в строке команды или в базе данных параметров можно задать такие характеристики канвы, как цвета или трехмерное представление. Команда canvas возвращает свой аргумент имяПути. В момент исполнения команды окно с именем имяПути должно отсутствовать, однако его родительское должно существовать.

Примитивы канвы реализуют структурную графику. Канва изображает некоторый набор элементов, таких как прямоугольники, окружности, линии или текстовые элементы. Над элементами можно выполнять различные действия (например, передвигать или перекрашивать их), и к ним можно приписывать команды способом, аналогичным тому, как команда bind привязывает команды к примитивам. Можно, например, приписать некоторую команду событию <Button-1>, и эта команда будет выполняться всякий раз при нажатии кнопки 1 на данном элементе. Таким образом, поведение элементов канвы может определяться привязанным к ним скриптам Tcl.

### СПИСОК ВЫВОДА

Элементы канвы упорядочены, так что при выводе на экран сначала выводится первый элемент, за ним второй и так далее. Очередные выводимые элементы заслоняют элементы, уже выведенные на экран; иногда про них говорят, что они выводятся поверх первых. При создании нового элемента он заносится на последнее место в списке, поверх всех элементов, созданных ранее. Порядок элементов в списке можно поменять с помощью команд примитивов.

Элементы-окна представляют собой исключение из приведенного правила. Базовая система управления окнами предполагает, что новое окно всегда выводится поверх всех предыдущих. Кроме того, команды примитивов канвы не влияют на порядок в стеке окон; вместо них надо использовать команды Tk raise и lower.

### ИДЕНТИФИКАТОРЫ И ТЕГИ ЭЛЕМЕНТОВ

Есть два способа обращаться к элементам примитивов канвы по идентификатору и по тегу. У каждого элемента есть свой уникальный идентификационный номер, присваиваемый при создании элемента. Идентификатор элемента никогда не изменяется, и ни один идентификатор не используется дважды на протяжении существования данного примитива канвы.

Кроме того, каждому элементу канвы можно приписать несколько тегов. Тег это просто строка символов, и он может быть иметь любой вид кроме числового. Например, "x123" годится, а "123" нет. Один и тот же тег можно приписывать нескольким элементам. Обычно это свойство используется для объединения элементов по характерным признакам. Например, всем выбранным элементам можно приписать тег "selected".

Тег all приписан по умолчанию всем элементам канвы; с его помощью выполняются операции на всех элементах канвы.

Тегом current автоматически управляет Tk. Он относится к текущему элементу, находящемуся поверх всех остальных из тех, чья область покрывает положение курсора. Если курсор .Мыши. расположен вне примитива канвы или если он не накрывается никаким элементом, то тег current не приписывается никакому элементу.

При указании элемента в командах примитивов канвы реализован следующий подход: если описатель является числом, то это число интерпретируется как идентификатор элемента. В противном случае описатель относится ко всем элементам с таким тегом. Используемый ниже символ тегИлиИд указывает на то, что соответствующий аргумент может быть тегом, которому отвечает несколько (быть может, ни одного) элемента, или идентификатором, которому отвечает единственный элемент. Некоторые команды примитивов могут работать одновременно только с одним элементом; если символу тегИлиИд соответствует несколько элементов, то такая команда обычно обрабатывает первый (самый нижний) элемент списка вывода, к которому она применима. Исключения приведены ниже в описаниях команд примитивов.

### КООРДИНАТЫ

Все координаты канвы записываются в форме чисел с плавающей точкой. Координаты и расстояния на экране задаются в виде чисел с плавающей точкой, за которыми может следовать одна или несколько букв. Если буквы нет, то единицей измерения расстояния является пиксель. Буква m указывает на измерение расстояний в миллиметрах; буква c в сантиметрах; i в дюймах; p в точках принтера (1/72 дюйма). При перемещении по экрану вниз y-координата увеличивается; x-координата возрастает при перемещении по экрану вправо.

### ПРЕОБРАЗОВАНИЯ

Обычно начало системы координат канвы расположено в верхнем левом углу окна, содержащего канву. Положение начала координат относительно окна можно изменить с помощью команд xview и yview. Обычно этой возможностью пользуются при прокрутке. Канва не позволяет растягивать систему координат или поворачивать ее по отношению к системе координат окна.

Отдельные элементы канвы можно сдвигать с помощью описываемых ниже команд примитивов; их можно также растянуть или сжать, но нельзя повернуть.

### ИНДЕКСЫ

Для указания на отдельные части текста в текстовых элементах поддерживаются индексы. Индексы используются в командах вставки текста, удаления части текста, установки курсора ввода. Индекс можно определить одним из нескольких возможных способов; различные типы элементов поддерживают индексы различных типов. Ниже приведено описание видов индексов; при введении новых типов текстовых элементов имеет смысл обеспечить поддержку разумного подмножества видов индекса. Отметим, что можно ссылаться на символ, следующий непосредственно за последним символом текстового элемента; эта возможность полезна, например, при вводе нового текста в конец элемента.

число
  Десятичное число, указывающее положение нужного символа внутри текстового элемента. "0" указывает на первый символ, 1 на второй и т.д. Отрицательные числа интерпретируются как 0, а числа, большие длины текстового элемента как если бы они равнялись этой длине.
end
  Указывает на символ, следующий непосредственно за последним символом текстового элемента (совпадает с числом символов в элементе).
insert
  Указывает на символ, непосредственно предшествующий курсору ввода.
sel.first
  Указывает на первый выделенный символ в элементе. Если в элементе нет выделенных символов, то такая форма запрещена.
sel.last
  Указывает на последний выделенный символ в элементе. Если в элементе нет выделенных символов, то такая форма запрещена.
@x,y
  Указывает на символ в позиции (x,y), где x и y заданы в координатной системе канвы. Если значения координат выходят за пределы, занятые текстовым элементом, то берется первый или последний символ в строке, ближайшей к указанной позиции.

## КОМАНДА ПРИМИТИВА

Команда canvas создает новую команду Tcl с именем имяПути. С помощью этой новой команды можно выполнять различные операции над примитивами. Она имеет следующий общий вид:

          имяПути параметр аргумент аргумент ...

Параметр и аргументы уточняют поведение команды. В примитивах канвы могут встречаться следующие команды примитивов:

имяПути addtag тег спец_поиска арг арг ...

  Добавляет тег к списку тегов, связанному с каждым элементом, удовлетворяющим ограничениям, заданным спец_поиска и аргументами (если такого тега в списке еще нет). Если ни один элемент не удовлетворяет наложенным ограничениям, то команда не производит никаких действий. Результатом выполнения команды является пустая строка. Спец_поиска и аргументы могут принимать следующие значения:

  above тегИлиИд
    Выделяет элемент, непосредственно следующий (расположенный поверх) за элементом тегИлиИд в списке вывода. Если аргумент тегИлиИд задает несколько элементов, то команда выполняется по отношению к последнему (самому верхнему) из них.
  all
    Выделяет все элементы канвы.
  below тегИлиИд
    Выделяет элемент, непосредственно предшествующий (расположенный ниже) элементу тегИлиИд в списке вывода. Если аргумент тегИлиИд задает несколько элементов, то команда выполняется по отношению к первому (самому нижнему) из них.
  closest x y нимб начало
    Выделяет элемент, ближайший к точке с координатами (x,y). Если таких элементов несколько (например, несколько элементов накрывают эту точку), то выделяется самый верхний из них. Нимб, если он задан, должен быть неотрицательным числом. Всякий элемент, расстояние от которого до точки (x,y) меньше, чем нимб, считается накрывающим эту точку. Аргумент начало позволяет обходить по кругу все ближайшие к точке элементы. Начало, если оно задано, представляет собой идентификатор или тег элемента (в случае, если это тег, будет выбран первый элемент списка, соответствующего данному тегу). В этой форме выделяется не самый верхний элемент из ближайших, а самый верхний из тех ближайших элементов, которые ниже элемента начало в списке вывода. В случае если таких элементов нет, команда выполняется так же, как и в отсутствие аргумента начало.
  enclosed x1 y1 x2 y2
    Выделяет все элементы, заключенные внутри прямоугольника с углами (x1,y1) и (x2,y2). Величина x1 должна быть не меньше, чем x2, а y1 не меньше, чем y2.
  overlapping x1 y1 x2 y2I
    Выделяет все элементы, перекрывающиеся с прямоугольником с углами (x1,y1) и (x2,y2). Величина x1 должна быть не меньше, чем x2, а y1 не меньше, чем y2.
  withtag тегИлиИд
    Выделяет все элементы, заданные тегИлиИд.
имяПути bbox тегИлиИд тегИлиИд тегИлиИд
  Возвращает список из четырех элементов приближенных значений координат прямоугольника, ограничивающего все элементы, заданные аргументами тегИлиИд. Список имеет вид x1 y1 x2 y2, причем экранные представления элементов находятся в области, ограниченной слева вертикальной прямой с координатой x1, справа вертикальной прямой с координатой x2, сверху горизонтальной прямой с координатой y1, снизу горизонтальной прямой с координатой y2. Значения координат могут отличаться от точных на несколько пикселей. Если под описание тегИлиИд не подходит ни один элемент или если у этих элементов прямоугольники вывода пусты, то команда возвращает пустую строку.
имяПути bind тегИлиИд последовательность команда

  Эта команда привязывает ко всем элементам, заданным аргументом тегИлиИд, команду, которая выполняется всякий раз при наступлении события, описываемого последовательностью, на одном из этих элементов. Эта команда похожа на команду bind, за исключением того, что она действует на элементах канвы, а не на целых примитивах. Синтаксис последовательности и подстановки, выполняемые в команде перед ее выполнением, подробно описаны в bind. Если в команде заданы все аргументы, то создаваемая привязка замещает все предыдущие привязки для той же последовательности и тегИлиИд (если первый символ в команде +, то новая привязка присоединяется к уже существующим, а не замещает их). В этом случае команда возвращает пустую строку. Если аргумент команда опущен, то возвращается строка команды, связанной с тегИлиИд и последовательностью (если такой команды нет, то возникает ошибка). Если опущены оба аргумента команда и последовательность, то результатом выполнения служит список всех последовательностей, для которых определена привязка к тегИлиИд.

  Привязки можно задавать только для событий, связанных с клавиатурой или "Мышью" (таких как Enter, Leave, ButtonPress, Motion и KeyPress), а также для виртуальных событий. При работе с событиями в канве используется текущий элемент, определенный выше (см. "Идентификаторы и теги элементов"). События Enter и Leave наступают, когда элемент становится или перестает быть текущим; обратите внимание на отличие этих событий от событий Enter и Leave для окон. События, связанные с "Мышью", наступают только для текущего элемента (если таковой имеется; подробности см. ниже в описании команды примитива focus). При использовании в привязке виртуального события привязка может подключиться только, если в определении этого виртуального события участвует событие, связанное с "Мышью" или клавиатурой.

  Данному событию может соответствовать несколько привязок. Такое может произойти, например, если одна привязка осуществляется к идентификатору события, а другая к одному из его тегов. В подобном случае выполняются все привязанные события. Первым идет скрипт, привязанный к тегу all, затем поочередно выполняются скрипты, привязанные к каждому из тегов элемента (в порядке их следования), последней идет привязка к идентификатору элемента. Если несколько привязок соответствует одному тегу, то выполняется лишь самая конкретная из них. Команда continue в скрипте прекращает его выполнение, команда break прекращает выполнение скрипта и всех последующих скриптов для события, как и в случае команды bind.

  Если с помощью команды bind к окну канвы были выполнены дополнительные привязки, то они выполняются после привязок к элементам канвы, выполненных командой примитива bind.

имяПути canvasx xЭкрана шагСетки
  По заданной x-координате xЭкрана окна возвращает x-координату канвы, расположенной на этом месте. Если задан шагСетки, то координата канвы округляется к ближайшему кратному единиц шагаСетки.
имяПути canvasy yЭкрана шагСетки
  По заданной y-координате yЭкрана окна возвращает y-координату канвы, расположенной на этом месте. Если задан шагСетки, то координата канвы округляется к ближайшему кратному единиц шагаСетки.
имяПути cget параметр
  Возвращает текущее значение параметра конфигурации, заданного аргументом параметр.
имяПути cоnfigure параметр значение параметр значение ...
  Сообщает текущие параметры конфигурации примитива или модифицирует их. Если параметр не задан, то возвращает список всех текущих значений параметров имениПути (формат списка приведен в описании Tk_ConfigureInfo). Если параметр задан без указания значения, то команда возвращает список, описывающий указанный параметр (этот список совпадает с частью списка, возвращаемого при отсутствии параметра). Если заданы одна или несколько пар параметр-значение, то команда присваивает указанным параметрам примитива данные значения; результатом ее выполнения в этом случае служит пустая строка. Параметр может принимать любые значения, воспринимаемые командой canvas.
имяПути coords тегИлиИд x0 y0 ...
  Сообщает текущие значения координат, определяющих элемент, или модифицирует их. Если координаты не заданы, то возвращает список, составленный из координат элемента, указанного аргументом тегИлиИд. Если координаты заданы, то их значения замещают текущие значения координат означенного элемента. Если тегИлиИд указывает на несколько элементов, то команда выполняется для идущего первым в списке вывода.
имяПути create типx y x y ... параметр значение ...
  Создает в имяПути новый элемент типа тип. Формат аргументов, следующих за аргументом тип, зависит от значения типа, однако обычно эти аргументы представляют собой координаты одной или нескольких точек, за которыми следуют спецификации нескольких параметров элемента (быть может, ни одного). Подробнее синтаксис этой команды описан ниже (см. "Описания различных типов").
имяПути dchars тегИлиИд первый последний
  Удаляет символы с первого по последний включительно в каждом элементе, подходящем под описание тегИлиИд. Если какие-либо из этих элементов не поддерживают текстовых операций, то они пропускаются. Аргументы первый и последний должны быть индексами символов в элементе, заданными в соответствии с описанием, приведенным в разделе "Индексы". При опущенном аргументе последний его значение принимается по умолчанию равным значению первый. Команда возвращает пустую строку.
имяПути delete тегИлиИд тегИлиИд ...
  Удаляет все элементы, подходящие под описание, заданное аргументами, и возвращает пустую строку.
имяПути dtag тегИлиИд тегДляУдаления
  Удаляет все теги тегДляУдаления из списка тегов, ассоциированного с каждым из элементов, описываемых аргументом тегИлиИд. Если ни один из тегов такого элемента не входит в тегДляУдаления, то никаких действий не производится. Если аргумент тегДляУдаления отсутствует, то его значение по умолчанию совпадает с тегИлиИд. Команда возвращает пустую строку.
имяПути find командаПоиска арг арг ...
  Команда возвращает список, состоящий из всех элементов, удовлетворяющих критериям поиска, заданным аргументами командаПоиска и арг. Аргументы командаПоиска и арг могут иметь любой вид, воспринимаемый командой addtag. Список элементов представлен в виде стека, в котором нижний элемент идет последним.
имяПути focus тегИлиИд

  Устанавливает фокус клавиатуры для примитива канвы на элементе, заданном аргументом тегИлиИд. Если под описание подходят несколько элементов, то фокус устанавливается на тот из них, который идет первым в списке вывода из элементов, поддерживающих курсор ввода. Если под описание не подходит ни один из элементов или если ни один из подходящих элементов не поддерживает курсор ввода, то фокусировка не меняется. Если тегИлиИд представляет собой пустую строку, то ни один из элементов не оказывается в фокусе. Если аргумент тегИлиИд не задан, то команда возвращает идентификатор элемента, находящегося в фокусе или пустую строку, если такого элемента нет.

  После установки фокуса на элемент в этом элементе будет отображаться курсор ввода и все клавиатурные события будут направлены на этот элемент. Элемент фокусировки канвы и окно фокусировки на экране (установленное командой focus) совершенно независимы: элемент находится в фокусе ввода только если (а) его канва является окном фокусировки и (б) сам элемент является элементом фокусировки канвы. В большинстве случаев полезно вслед за командой focus примитива выполнять команду focus, чтобы установить фокус на канве (если такая установка еще не была произведена).

имяПути gettags тегИлиИд
  Возвращает список, элементами которого служат теги, ассоциированные с элементом, подходящим под описание тегИлиИд. Если под это описание подходят несколько элементов, то список относится к тому из них, который идет первым в списке вывода. Если элементов, подходящих под описание нет или если у подходящего элемента нет тегов, то команда возвращает пустую строку.
имяПути icursor тегИлиИд индекс
  Устанавливает курсор ввода для элемента (элементов), подходящего под описание тегИлиИд, в положение, непосредственно предшествующее символу, заданному аргументом индекс. Если некоторые (быть может, все) подходящие элементы не поддерживают курсор ввода, то над ними никаких действий не производится. Допустимые формы аргумента индекс описаны выше (см. "Индексы"). Замечание: фактическое высвечивание курсора ввода в элементе производится только, если этот элемент находится в фокусе (см. описание команды примитива focus), однако положение курсора можно установить и в элементе вне фокуса. Команда возвращает пустую строку.
имяПути insert тегИлиИд передЭтим строка
  Вставляет строку перед символом, заданным аргументом передЭтим, в каждом из элементов, подходящих под описание тегИлиИд и поддерживающих курсор ввода. Возможные формы аргумента передЭтим описаны выше (см. Индексы). Команда возвращает пустую строку.
имяПути itemcget тегИлиИд параметр
  Возвращает текущее значение параметра конфигурации с именем параметр для элемента тегИлиИд. Команда аналогична команде примитива cget, за исключением того, что она относится к отдельному элементу, а не к примитиву в целом. Значение параметра может быть любым, допустимым для команды примитива create, используемой для создания элемента. Если тег тегИлиИд описывает несколько элементов, то команда применяется к первому из них.
имяПути itemconfigure тегИлиИд параметр значение параметр значение ...
  Команда аналогична команде примитива configure за исключением того, что она изменяет значения параметров элементов, а не всего примитива канвы. Если аргумент параметр не задан, то команда возвращает список значений параметров для первого элемента, подходящего под описание тегИлиИд (формат списка описан в Tk_ConfigureInfo). Если аргумент параметр задан, а аргумент значение отсутствует, то команда возвращает список значений только указанного параметра (этот список является подсписком списка, возвращаемого в отсутствие аргумента параметр). Если задано несколько пар параметр-значение, то команда устанавливает новые значения указанных параметров для каждого из элементов тегИлиИд; в этом случае команда возвращает пустую строку. Допустимые формы параметров и значений такие же, как в команде примитива create, которая создает элементы. Допустимые параметры и возможные их значения описаны ниже (см. описание отдельных типов элементов).
имяПути lower тегИлиИд нижеЭтого
  Передвигает все элементы, подходящие под описание тегИлиИд, в списке вывода непосредственно перед элементом, заданным аргументом нижеЭтого. Если под описание подходят несколько элементов, то они передвигаются все, причем их относительный порядок сохраняется. Аргумент нижеЭтого представляет собой тег или идентификатор; если он описывает несколько элементов, то для размещения тегИлиИд используется первый из них. Замечание: на элементы окон эта команда влияния не оказывает. Элементы окон перекрывают элементы других типов и на порядок их расположения влияют команды raise и lower, а не команды raise и lower примитивов канвы. Команда возвращает пустую строку.
имяПути move тегИлиИд xКоличество yКоличество
  Сдвигает каждый из элементов, подходящих под описание тегИлиИд, прибавляя к координатам каждой точки элемента координаты xКоличество и yКоличество. Команда возвращает пустую строку.
имяПути postscript параметр значение параметр значение ...

  Генерирует Postscript-представление для каждой канвы или для некоторых из них. Если параметр имеет вид -file, то Postscript-представление записывается в указанный файл, а команда возвращает пустую строку; в противном случае возвращается сгенерированное Postscript-представление. Если интерпретатор, владеющий канвой, помечен как безопасный, то операция закончится неудачно, так как безопасным интерпретаторам не разрешается записывать файлы. Если задан параметр -channel, то аргументом является имя канала, открытого на вывод. Postscript-представление записывает в этот канал; по окончании выполнения команды канал остается открытым для последующих операций вывода. Postscript-представление создается в форме Encapsulated Postscript в соответствии с соглашением Documentation Structuring Conventions, v. 3.0. Замечание: по умолчанию Postscript-представление создается только для информации, выводимой в окно канвы на экране. Только что созданная канва имеет размер 1x1 пиксель, поэтому в Postscript ничего выведено не будет. Чтобы преодолеть эту трудность, необходимо либо выполнить команду update и дождаться пока окно достигнет своего нормального размера, либо задать размеры канвы для печати параметрами -width и -height. Пары аргументов параметр-значения используются для дополнительного управления характеристиками печати. Команда поддерживает следующие параметры:

  -colormap имяПеременной
    ИмяПеременной должно быть именем массива, описывающего палитру в Postscript. Значение каждого элемента этого массива должно кодировать установку в Postscript определенного цвета, например, 1.0 1.0 0.0 setrgbcolor.. При выводе информации о цвете в Postscript Tk проверяет, есть ли в массиве имяПеременной элемент с таким же именем цвета. Если это так, то Tk использует значение этого элемента как команду Postscript для установки цвета. Если параметр -colormap не указан или если данному цвету не соответствует никакой элемент массива, то Tk берет интенсивность красного, голубого или зеленого X цвета.
  -colormode режим
    Задает способ вывода цветовой информации. Режим может принимать значения color (для полноцветного вывода), gray (преобразует все цвета к их серому аналогу), mono (переводит каждый цвет в черный или белый).
  -file имяФайла
    Задает имя файла вывода. Если этот параметр не указан, то команда возвращает результирующее Postscript-представление вместо записи его в файл.
  -fontmap имяПеременной
    ИмяПеременной должно быть именем массива, описывающего преобразование шрифтов. Каждый элемент массива должен представлять собой Tcl список из двух элементов имени и размера шрифта. При выводе Postscript команд для конкретного шрифта Tk проверяет, описан ли в массиве имяПеременной элемент с соответствующим именем. Если такой элемент есть, то в Postscript используется информация, содержащаяся в нем. В противном случае Tk пытается догадаться о том, какой шрифт использовать. Обычно эти попытки удаются только для стандартных шрифтов, таких как Times, Helvetica и Courier, и только в случае, если в имени X шрифта не пропущено ни одного дефиса перед размером. Так, например, имя -*_-Courier-Bold-R-Normal--*_-120-*_ будет воспринято нормально, а *Courier-Bold-R-Normal*120* нет; дефисы нужны Tk для распознавания имени шрифта.
  -height размер
    Задает высоту печатаемого поля канвы. По умолчанию имеет значение высоты окна канвы.
  -pageanchor якорь
    Указывает, какая из выводимых точек канвы должна попасть в опорную точку страницы печати (заданную параметрами -pagex и -pagey). Например, задание -pageanchor n означает, что при печати верхняя центральная точка окна канвы располагается в опорной точке страницы. По умолчанию параметр имеет значение center.
  -pageheight размер
    Указывает на необходимость растяжения страницы печати в горизонтальном и вертикальном направлении так, чтобы напечатанная в Postscript страница имела высоту размер. Значением параметра должно быть число с плавающей точкой, за которым следует символ c, если размер указан в сантиметрах, i в дюймах, m в миллиметрах, p или ничего в точках принтерах (1/72 часть дюйма). По умолчанию имеет значение высоты выводимой области экрана. Если заданы оба параметра -pageheight и -pagewidth, то для растяжения используется значение параметра -pagewidth (возможность неравномерного растяжения в двух направлениях не предусмотрена).
  -pagewidth размер
    Указывает на необходимость растяжения страницы печати в горизонтальном и вертикальном направлении так, чтобы напечатанная в Postscript страница имела ширину размер. Параметр может принимать такие же значения, что и параметр -pageheight. По умолчанию имеет значение ширины выводимой области экрана. Если заданы оба параметра -pageheight и -pagewidth, то для растяжения используется значение параметра -pagewidth (возможность неравномерного растяжения в двух направлениях не предусмотрена).
  -pagex координата
    Указывает x-координату опорной точки Postscript-страницы в любом виде, приемлемом для -pageheight. В сочетании с параметрами -pagey и -pageanchor позволяет задать размещение выводимой области на Postscript-странице. По умолчанию задает координату центра страницы.
  -pagey координата
    Указывает y-координату опорной точки Postscript-страницы в любом виде, приемлемом для -pageheight. В сочетании с параметрами -pagex и -pageanchor позволяет задать размещение выводимой области на Postscript-странице. По умолчанию задает координату центра страницы.
  -rotate булевское
    Булевское значение указывает, следует ли при печати повернуть страницу на 90 градусов. При обычном выводе ось x идет вдоль короткой стороны страницы (ориентация "портрет"); после поворота она идет вдоль длинной стороны (ориентация "пейзаж"). По умолчанию страница печатается без поворота.
  -width размер
    Задает ширину печатаемого поля канвы. По умолчанию имеет значение ширины окна канвы.
  -x координата
    Задает x-координату левого края печатаемой области канвы (в координатах канвы, а не окна). По умолчанию совпадает с координатой левого края окна.
  -y координата
    Задает y-координату верхнего края печатаемой области канвы (в координатах канвы, а не окна). По умолчанию совпадает с координатой верхнего края окна.
имяПути raise тегИлиИд вышеЭтого
  Передвигает все элементы, подходящие под описание тегИлиИд, в списке вывода непосредственно за элемент, заданный аргументом вышеЭтого. Если под описание подходят несколько элементов, то они передвигаются все, причем их относительный порядок сохраняется. Аргумент вышеЭтого представляет собой тег или идентификатор; если он описывает несколько элементов, то для размещения тегИлиИд используется последний (самый верхний) из них. Замечание: на элементы окон эта команда влияния не оказывает. Элементы окон перекрывают элементы других типов и на порядок их расположения влияют команды raise и lower, а не команды raise и lower примитивов канвы. Команда возвращает пустую строку.
имяПути scale тегИлиИд xЦентр yЦентр xКоэффициент yКоэффициент
  Растягивает или сжимает все элементы, подходящие под описание тегИлиИд в координатном пространстве канвы. Аргументы xЦентр и yЦентр задают координаты центра преобразования, а xКоэффициент и yКоэффициент коэффициенты растяжения по осям x и y соответственно (значение 1.0 указывает на отсутствие растяжения). Расстояние по оси x каждой точки, задающей положение элемента, от центра растяжения увеличивается в xКоэффициент раз. Аналогично, расстояние по оси y каждой точки, задающей положение элемента, от центра растяжения увеличивается в yКоэффициент раз. Команда возвращает пустую строку.
имяПути scan параметр аргументы
  Используется для сканирования канвы. Имеет две формы в зависимости от значения параметра:
имяПути scanmark x y
  Сохраняет x, y и текущий вид канвы для последующего использования командами scan dragto. Обычно эта команда используется в сочетании с нажатием клавиши "Мыши" в примитиве, а x и y являются координатами курсора "Мыши". Возвращает пустую строку.
имяПути scan dragto x y
  Вычисляет разность между значениями координат x и y и значениями тех же координат, сохраненными последней командой scan mark на данном примитиве. Затем переносит изображение примитива на расстояние, в 10 раз превышающее вычисленную разность. Команда обычно связана с событиями движения "Мыши" в примитиве и используется для скоростного перетаскивания канвы в его окне. Возвращает пустую строку.
имяПути select параметр тегИлиИд аргумент
  Производит действия над выделенными элементами тем или иным способом в зависимости от значения параметра. Команда может иметь одну из описанных ниже форм. В каждой из приведенных форм тегИлиИд должен описывать элемент, допускающий индексирование и выделение; если под описание подходит несколько элементов, то используется первый из них, допускающий индексирование и выделение. Индекс представляет собой текстовое указание позиции в тегИлиИд (см. описание в "Индексы").
имяПути select adjust тегИлиИд индекс
  Определяет ближайший к указанному аргументом индекс положению край набора выделенных элементов в тегИлиИд и устанавливает новое значение этого края в индекс (т.е. элемент индекс входит в выделение, а соседний с ним нет). Противоположный край выделения становится опорной точкой для последующих команд select to. Если в текущий момент в тегИлиИд выделения отсутствуют, то команда ведет себя точно так же, как команда примитива select to. Возвращает пустую строку.
имяПути select clear
  Очищает выделенные элементы в данном примитиве. Если таких элементов нет, то не производит никаких действий. Возвращает пустую строку.
имяПути select from тегИлиИд индекс
  Устанавливает опорную точку выделения непосредственно перед символом, заданным аргументом индекс. Текущего выделения команда не меняет. Она лишь фиксирует начало выделения для последующих команд select to. Возвращает пустую строку.
имяПути select item
  Возвращает идентификатор выделенного элемента, если выделение представляет собой элемент канвы. Если в данной канве выделение отсутствует, то команда возвращает пустую строку.
имяПути select to тегИлиИд индекс
  Выделяет все символы между опорным символом выделения и символом, указанным аргументом индекс, включая этот символ. Опорный символ включается в выделение, только если значение аргумента индекс больше номера опорного символа. Опорный символ устанавливается последней выполненной на данном примитиве командой select adjust или select from. Если опорный символ выделения в примитиве не входит в элемент, описываемый аргументом тегИлиИд, то опорная точка устанавливается на символ, указанный аргументом индекс. Команда возвращает пустую строку.
имяПути type тегИлиИд
  Возвращает тип элемента, описываемого аргументом тегИлиИд (например, rectangle или text). Если тегИлиИд описывает несколько элементов, то возвращается тип первого из них. Если ни один элемент не подходит под описание тегИлиИд, то команда возвращает пустую строку.
имяПути xview аргументы

  Используется для запроса горизонтального положения информации, выведенной в окне канвы, и изменения этого положения. Команда может иметь одну из следующих форм:

  имяПути xview
    Возвращает список, состоящий из двух элементов. Каждый из элементов списка представляет собой вещественное число, заключенное между нулем и единицей; эта пара чисел описывает видимый в окне горизонтальный интервал. Так, например, если первое число равно .2, а второе .6, то 20% области канвы оказывается невидимой слева от окна, в окне выводится 40% информации, и еще 40% оказывается невидимой справа от окна.
  имяПути xview moveto число
    Передвигает область видимости так, что слева от окна остается невидимой часть канвы, указанная аргументом число. Число должно быть заключено между 0 и 1
  имяПути xview scroll количество что
    Сдвигает выводимый в окне текст вправо или влево, выравнивая его границу в соответствии со значениями аргументов. Количество должно быть целым числом, аргумент что может принимать значения units или pages или быть сокращением одного из этих слов. Если аргумент что принимает значение units, то выравнивание происходит относительно единиц, указанных значением параметра xScrollIncrement (если это значение положительно), или относительно десятой части ширины окна (в противном случае). Если значением аргумента что является pages, то единицей выравнивания служит величина в девять десятых ширины окна. Если количество отрицательно, то видимая информация сдвигается вправо, в противном случае влево.
имяПути yview аргументы

  Используется для запроса вертикального положения информации, выведенной в окне канвы, и изменения этого положения. Команда может иметь одну из следующих форм:

  имяПути yview
    Возвращает список, состоящий из двух элементов. Каждый из элементов списка представляет собой вещественное число, заключенное между нулем и единицей; эта пара чисел описывает видимый в окне вертикальный интервал. Так, например, если первое число равно .6., а второе 1.0, то в окне выводятся нижние 40% области канвы (заданной значением параметра -scrollregion). Эти значения совпадают со значениями, передаваемыми полосам прокрутки через параметр -yscrollcommand.
  имяПути yview moveto число
    Передвигает область видимости так, что сверху от окна остается невидимой часть канвы, указанная аргументом число. Число должно быть заключено между 0 и 1.
  имяПути yview scroll количество что
    Сдвигает выводимый в окне текст вверх или вниз, выравнивая его границу в соответствии со значениями аргументов. Количество должно быть целым числом, аргумент что может принимать значения units или pages или быть сокращением одного из этих слов. Если аргумент что принимает значение units, то выравнивание происходит относительно единиц, указанных значением параметра yScrollIncrement (если это значение положительно), или относительно десятой части высоты окна (в противном случае). Если значением аргумента что является pages, то единицей выравнивания служит величина в девять десятых высоты окна. Если количество отрицательно, то видимая информация сдвигается вниз, в противном случае вверх.

## ОБЗОР ТИПОВ ЭЛЕМЕНТОВ

Ниже описываются различные типы элементов, поддерживаемые примитивами канвы. Каждый тип характеризуется, во-первых, формой команды create, посредством которой создаются элементы этого типа, и, во-вторых, набором параметров конфигурации элементов этого типа, которые можно использовать в командах примитива create и itemconfigure. Большинство типов не поддерживают выделение и индексирование и связанные с этими операциями команды, такие как index или insert. Для типов, поддерживающих указанные возможности, они описаны явно (пока речь идет только о текстовых элементах).

### ДУГИ

Элементы типа arc выводятся на экран в виде отрезка дуги. Дуга представляет собой отрезок овала, заключенный между двумя радиусами (заданными параметрами -start и -extent); она изображается на экране в одном из нескольких возможных видов в зависимости от значения параметра -style. Дуги создаются командами примитива.

имяПути create arc x1 y1 x2 y2 параметр значение параметр значение ...

  Аргументы x1 y1 x2 y2 задают координаты противоположных углов прямоугольной области, в которую вписан овал. За координатами следует несколько пар параметр-значение, каждая из которых устанавливает значение одного из параметров конфигурации элемента. Такие же пары параметр-значение используются командами примитива itemconfigure для изменения параметров конфигурации. Команда поддерживает следующие параметры:

  -extent угол
    Задает величину сектора, содержащего дугу. Дуга простирается на угол, отсчитываемый от начальной точки дуги, заданной параметром -start. Угол может быть и отрицательным. Если его величина превосходит 360 градусов или оказывается меньше -360 градусов, то берется его значение по модулю 360.
  -fill цвет
    Закрашивает цветом область, ограниченную дугой. Аргумент цвет может принимать любое значение, воспринимаемое командой Tk_GetColor. Если значением цвета является пустая строка, то закрашивания не происходит. Пустая строка также принимается значением параметра по умолчанию.
  -outline цвет
    Цвет задает цвет контура дуги. Этот параметр может принимать любое значение, воспринимаемое командой Tk_GetColor. По умолчанию параметр имеет значение black. Если в качестве параметра задана пустая строка, то контур дуги не изображается.
  -outlinestipple двуцвет
    Указывает, что контур дуги должен изображаться в соответствии с образцом пунктира. Аргумент двуцвет указывает этот образец, он может принимать любое значение, воспринимаемое командой Tk_GetBitmap. Если параметр -outline не задан, то задание параметра -outlinestipple не влияет на вывод. Если значением данного параметра является пустая строка, то дуга будет рисоваться сплошной линией.
  -start угол
    Задает положение начала сектора, содержащего дугу. Угол задается в градусах и отсчитывается против часовой стрелки от 3-часового положения часовой стрелки. Он может быть как положительным, так и отрицательным.
  -stipple двуцвет
    Указывает необходимость закрашивания области дуги в соответствии с образцом пунктира. Допустимы любые значения, воспринимаемые командой Tk_GetBitmap. Если параметр -fill не задан, то параметр -stipple не оказывает влияния на вывод. Если значением параметра -stipple является пустая строка, то выполняется сплошное закрашивание.
  -style тип
    Задает тип изображения дуги. Если тип имеет значение pieslice (по умолчанию), то область дуги имеет вид сектора, ограниченного дугой и двумя радиусами, проведенными из центра овала к ее концам. Тип chord указывает на то, что область имеет вид сегмента, ограниченного дугой и отрезком, соединяющим ее концы. Тип arc означает, что область дуги состоит из самой этой дуги. В последнем случае параметр -fill игнорируется.
  -tags списокТегов
    Задает набор тегов, относящихся к элементу. СписокТегов представляет собой список имен тегов, замещающий имеющиеся теги элемента. СписокТегов может быть пустым.
  -width ширинаКонтура
    Задает ширину контура вокруг области дуги; значением параметра может быть любое допустимое значение координат, описанное выше (см. "Координаты"). Если значением параметра -outline является пустая строка, то параметр -width не влияет на характер вывода. Широкий контур центрируется на отрезках, ограничивающих область дуги. По умолчанию параметр имеет значение 1.0 .

### ДВУЦВЕТНЫЕ ЭЛЕМЕНТЫ

Элементы типа bitmap изображаются на экране с помощью двух цветов: цвета фона и цвета переднего плана, Двуцветные изображения создаются командой примитива

имяПути create bitmap x y параметр значение параметр значение ...

  Аргументы x и y задают координаты опорной точки двуцветного изображения на экране (подробнее процедура размещения изображения описана ниже при описании параметра -anchor). За координатами следует несколько пар параметр-значение, каждая из которых устанавливает значение одного из параметров конфигурации элемента. Такие же пары параметр-значение используются для изменения значений параметров с помощью команды примитива itemconfigure. Для двуцветных изображений допустимы следующие параметры:

  -anchor положениеОпоры
    ПоложениеОпоры указывает способ размещения изображения по отношению к его опорной точке. Параметр может принимать произвольное значение, воспринимаемое командой Tk_GetAnchor. Так, если параметр имеет значение center, то в опорной точке располагается центр изображения; значение n указывает, что в опорной точке располагается верхняя центральная точка изображения и т.д. По умолчанию параметр имеет значение center.
  -background цвет
    Задает цвет, используемый для отображения пикселей двуцветного изображения со значением 0. Параметр может принимать любое значение, воспринимаемое командой Tk_GetColor. Если параметр не задан или цвет является пустой строкой, то пиксели со значением 0 не выводятся, что создает эффект прозрачности.
  -bitmap двуцвет
    Задает двуцветное изображение для вывода в элементе. Параметр может принимать любое значение, воспринимаемое командой Tk_GetBitmap.
  -foreground цвет
    Задает цвет пикселей двуцветного изображения, имеющих значение .1.. Параметр может принимать любое значение, воспринимаемое командой Tk_GetColor; по умолчанию его значение black.
  -tags списокТегов
    Приписывает элементу список тегов. СписокТегов представляет собой список имен тегов, замещающий имеющиеся теги элемента. СписокТегов может быть пустым.

### ЛИНИИ

Элементы типа line выводятся на экран в виде прямо- или криволинейной ломаной. Линии создаются командой примитива

имяПути create line x1 y1 ... xn yn параметр значение параметр значение ...

  Аргументы от x1 до yn задают координаты последовательности из двух или более точек, соединенных отрезками. За координатами может следовать произвольный набор пар параметр-значение, каждая из которых устанавливает значение одного из параметров элемента. С помощью тех же пар параметр-значения можно задать новые значения параметров командами примитива itemconfigure. Команда поддерживает следующие параметры:

  -arrow где
    Указывает, следует ли изображать стрелки на одном или обоих концах линии. Значение где может быть одним из следующих: none (стрелки не изображаются), first (изображается стрелка в начале линии), last (изображается стрелка в конце линии) или both (стрелка изображается на обоих концах).
  -arrowshape форма
    Описывает форму стрелки. Значением параметра должен быть список, содержащий три элемента, каждый из которых представляет собой расстояние в виде, описанном выше (см. "Координаты"). Первый элемент списка задает расстояние вдоль линии от начала до острия стрелки. Второй элемент задает расстояние вдоль линии от хвостовых концов стрелки до ее острия, третий расстояние от внешнего ребра линии до хвостовых точек. Если параметр не задан, то Tk самостоятельно выбирает "разумную" форму стрелки.
  -capstyle стиль
    Описывает способ изображения концов линии в отсутствие стрелок. Параметр может принимать любое значение, воспринимаемое командой Tk_GetCapstyle (butt, projecting или round). По умолчанию имеет значение butt. При наличии стрелок параметр игнорируется.
  -fill цвет
    Задет цвет изображаемой линии. Параметр может принимать любое значение, воспринимаемое командой Tk_GetColor. Если значением параметра является пустая строка, то линия будет прозрачной. По умолчанию цвет имеет значение black.
  -joinstyle стиль
    Задает способ соединения отрезков линии в вершинах. Параметр может принимать любое значение, воспринимаемое командой Tk_GetCapstyle (bevel, miter или round). По умолчанию имеет значение miter. При наличии всего двух вершин параметр игнорируется.
  -smooth булевское
    Параметр может принимать любое значение, воспринимаемое командой Tk_GetBoolean. Указывает, нужно ли сглаживать ломаную, превращая ее в кривую (в этом случае линия изображается в виде набора параболических сплайнов: для первого и второго отрезка, для второго и третьего отрезка и т.д.). В кривую можно вставлять прямолинейные отрезки, удваивая нужные вершины.
  -splinesteps число
    Задает желаемую степень гладкости кривой: каждый сплайн будет аппроксимирован числом прямолинейных отрезков. При опущенном параметре -spline параметр -splinesteps игнорируется.
  -stipple двуцвет
    Указывает на необходимость пунктирного изображения линии; двуцвет задает образец изображения в виде, воспринимаемом командой Tk_GetBitmap. Если значением параметра является пустая строка (как, например, по умолчанию), то линия изображается непрерывной кривой.
  -tags списокТегов
    Приписывает к элементу набор тегов. СписокТегов представляет собой список имен тегов, замещающих все имеющиеся теги элемента. Он может быть пустым.
  -width ширинаЛинии
    Задает ширину линии в произвольном виде, описанном выше (см. "Координаты"). Центр широкой линии проходит через вершины. По умолчанию параметр имеет значение 1.0.

### ОВАЛЫ

Элементы типа oval появляются на экране в виде овальных или круглых областей. Каждый овал может быть закрашенным и иметь контур. Овалы создаются командой примитива

имяПути create oval x1 y1 x2 y2 параметр значение параметр значение ...

  Аргументы x1, y1, x2 и y2 задают координаты двух диагонально противоположных углов прямоугольника, заключающего овал. Овал включает в себя верхнюю и левую стороны прямоугольника, но не его нижнюю и правую сторону. Если прямоугольник представляет собой квадрат, то овал будет кругом, в противном случае он вытянут в одном из направлений. За координатами может следовать произвольный набор пар параметр-значение, каждая пара устанавливает значение одного из параметров. Такие же пары используются командами примитива itemconfigure для изменения конфигурации элемента. Команда поддерживает следующие параметры:

  -fill цвет
    Закрашивает цветом область, ограниченную овалом. Аргумент цвет может принимать любое значение, воспринимаемое командой Tk_GetColor. Если значением цвета является пустая строка, то закрашивания не происходит. Пустая строка также принимается значением параметра по умолчанию.
  -outline цвет
    Цвет задает цвет контура овала. Этот параметр может принимать любое значение, воспринимаемое командойTk_GetColor. По умолчанию параметр имеет значение black. Если в качестве параметра задана пустая строка, то контур овала не изображается.
  -stipple двуцвет
    Указывает на необходимость закрашивания внутренности овала в соответствии с образцом пунктира. Допустимы любые значения, воспринимаемые командой Tk_GetBitmap. Если параметр -fill не задан, то параметр -stipple не оказывает влияния на вывод. Если значением параметра -stipple является пустая строка (по умолчанию), то выполняется сплошное закрашивание.
  -tags списокТегов
    Задает набор тегов, относящихся к элементу. СписокТегов представляет собой список имен тегов, замещающий имеющиеся теги элемента. СписокТегов может быть пустым.
  -width ширинаКонтура
    Задает ширину контура вокруг овала; значением параметра может быть любое допустимое значение координат, описанное выше (см. "Координаты"). Если параметр -outline не задан, то параметр -width не влияет на характер вывода. Широкий контур центрируется на овале, заданном координатами x1, y1, x2, y2. По умолчанию параметр имеет значение 1.0.

### МНОГОУГОЛЬНИКИ

Элементы типа polygon выводятся на экран в виде закрашенных многоугольных (возможно, криволинейных) областей. Многоугольники задаются командами примитива

имяПути create polygon x1 y1 ... xn yn параметр значение параметр значение ...

  Аргументы с x1 до yn задают координаты не менее чем трех точек, определяющих замкнутый многоугольник. Первая и последняя точки могут совпадать; вне зависимости от того, так это или нет, Tk изображает замкнутый многоугольник. За координатами может следовать несколько пар параметр-значение, каждая из которых устанавливает один из параметров конфигурации элемента. Те же пары параметр-значение могут быть использованы в команде примитива itemconfigure для изменения конфигурации элемента. Команда поддерживает следующие параметры:

  -fill цвет
    Задет цвет закраски многоугольника. Параметр может принимать любое значение, воспринимаемое командой Tk_GetColor. Если значением параметра является пустая строка, то многоугольник будет прозрачным. По умолчанию цвет имеет значение black.
  -outline цвет
    Цвет задает цвет контура многоугольника. Этот параметр может принимать любое значение, воспринимаемое командой Tk_GetColor. Если в качестве значения параметра задана пустая строка (по умолчанию), то контур овала не изображается.
  -smooth булевское
    Параметр может принимать любое значение, воспринимаемое командой Tk_GetBoolean. Указывает, нужно ли сглаживать многоугольник, превращая его в кривую (в этом случае кривая изображается в виде набора параболических сплайнов: для первого и второго отрезка, для второго и третьего отрезка и т.д.). В кривую можно вставлять прямолинейные отрезки, удваивая нужные вершины.
  -splinesteps число
    Задает желаемую степень гладкости кривой: каждый сплайн будет аппроксимирован числом прямолинейных отрезков. При опущенном параметре -smooth параметр -splinesteps игнорируется.
  -stipple двуцвет
    Указывает на необходимость пунктирного закрашивания многоугольника; двуцвет задает образец изображения в виде, воспринимаемом командой Tk_GetBitmap. Если значением параметра является пустая строка (как, например, по умолчанию), то осуществляется непрерывное закрашивание.
  -tags списокТегов
    Приписывает к элементу набор тегов. СписокТегов представляет собой список имен тегов, замещающих все имеющиеся теги элемента. Он может быть пустым.
  -width ширинаКонтура
    Задает ширину контура вокруг многоугольника в произвольном виде, описанном выше (см. "Координаты"). Если параметр -outline не задан, то параметр -width игнорируется. По умолчанию параметр имеет значение 1.0.

Многоугольные элементы отличаются от других прямоугольников, овалов и дуг в том отношении, что их внутренние точки считаются находящимися "внутри" многоугольника (например, в смысле команд примитива find closest и find overlapping), даже если он и не закрашен. Для большинства остальных типов элементов внутренние точки считаются находящимися внутри элемента, только если элемент закрашен или если он не закрашен и не имеет контура. Если Вам нужен незакрашенный многоугольник, внутренние точки которого не считаются находящимися внутри него, то пользуйтесь вместо этого элементом line.

### ПРЯМОУГОЛЬНИКИ

Элементы типа rectangle появляются на экране в виде прямоугольных областей. Каждый прямоугольник может быть закрашенным и иметь контур. Прямоугольники создаются командой примитива

имяПути create rectangle x1 y1 x2 y2 параметр значение параметр значение ...

  Аргументы x1, y1, x2 и y2 задают координаты двух диагонально противоположных углов прямоугольника (верхняя и левая стороны прямоугольника входят в него, а нижняя и правая сторона нет). За координатами может следовать произвольный набор пар параметр-значение, каждая пара устанавливает значение одного из параметров. Такие же пары используются командами примитива itemconfigure для изменения конфигурации элемента. Команда поддерживает следующие параметры:

  -fill цвет
    Закрашивает цветом прямоугольную область. Аргумент цвет может принимать любое значение, воспринимаемое командой Tk_GetColor. Если значением цвета является пустая строка, то закрашивания не происходит. Пустая строка также принимается значением параметра по умолчанию.
  -outline цвет
    Цвет задает цвет контура прямоугольника. Этот параметр может принимать любое значение, воспринимаемое командой Tk_GetColor. По умолчанию параметр имеет значение black. Если в качестве параметра задана пустая строка, то контур прямоугольника не изображается.
  -stipple двуцвет
    Указывает на необходимость закрашивания прямоугольника в соответствии с образцом пунктира. Допустимы любые значения, воспринимаемые командой Tk_GetBitmap. Если параметр -fill не задан, то параметр -stipple не оказывает влияния на вывод. Если значением параметра -stipple является пустая строка (по умолчанию), то выполняется сплошное закрашивание.
  -tags списокТегов
    Задает набор тегов, относящихся к элементу. СписокТегов представляет собой список имен тегов, замещающий имеющиеся теги элемента. СписокТегов может быть пустым.
  -width ширинаКонтура
    Задает ширину контура вокруг прямоугольника; значением параметра может быть любое допустимое значение координат, описанное выше (см. ""Координаты""). Если параметр -outline не задан, то параметр -width не влияет на характер вывода. Широкий контур центрируется на прямоугольнике, заданном координатами x1, y1, x2, y2. По умолчанию параметр имеет значение 1.0.

### ТЕКСТОВЫЕ ЭЛЕМЕНТЫ

Текстовый элемент предназначен для вывода на экран строки символов в одну или несколько строчек. Текстовые элементы поддерживают индексы и выделение, и на них могут быть выполнены команды примитива канвы dchars, focus, icursor, index, insert, select. Текстовые элементы создаются командой примитива

имяПути create text x y параметр значение параметр значение ...

  Аргументы x и y задают координаты точки, используемой для размещения текста на экране (подробнее размещение текста описано ниже при описании параметров). За координатами могут следовать несколько пар параметр-значение, каждая из которых устанавливает значение одного из параметров конфигурации элемента. Такие же пары используются командами примитива itemconfigure для изменения конфигурации элемента. Команда поддерживает следующие параметры:

  -anchor положениеОпоры
    ПоложениеОпоры указывает способ размещения текста по отношению к его опорной точке. Параметр может принимать произвольное значение, воспринимаемое командой Tk_GetAnchor. Так, если параметр имеет значение center, то в опорной точке располагается центр текста; значение n указывает что в опорной точке располагается верхняя центральная точка текста и т.д. По умолчанию параметр имеет значение center.
  -fill цвет
    Закрашивает цветом символы текста. Аргумент цвет может принимать любое значение, воспринимаемое командой Tk_GetColor. Значением параметра по умолчанию является black.
  -font имяШрифта
    Задает шрифт текста в элементе. ИмяШрифта может быть произвольной строкой, воспринимаемой командой Tk_GetFontStruct. Если параметр не задан, то его значением по умолчанию является системно-зависимый шрифт.
  -justify как
    Задает способ выравнивания текста внутри области текста. Аргумент как может принимать одно из значений left, right или center. Параметр оказывает влияние на размещение текста, только если выводится несколько строчек. По умолчанию параметр имеет значение left.
  -stipple двуцвет
    Указывает на необходимость вывода текста в соответствии с образцом пунктира. Допустимы любые значения, воспринимаемые командой Tk_GetBitmap. Если значением параметра -stipple является пустая строка (по умолчанию), то текст выводится сплошной линией.
  -tags списокТегов
    Задает набор тегов, относящихся к элементу. СписокТегов представляет собой список имен тегов, замещающий имеющиеся теги элемента. СписокТегов может быть пустым.
  -width длинаСтрочки
    Задает максимальную длину строчки текста; значением параметра может быть любое допустимое значение координат, описанное выше (см. "Координаты"). Если значение параметра равно нулю (по умолчанию), то перенос строки происходит только при появлении в тексте символа новой строчки. Если, однако, значение параметра не равно нулю, то концом строчки, длина которой превосходит длинуСтрочки, считается символ пробела с номером, ближайшим (с недостатком) к длинеСтрочки. Этот символ пробела рассматривается как символ перехода на новую строчку.

### ОКНА

Элементы типа window предназначены для вывода окна в указанное положение на канве. Окна создаются командой

имяПути create window x y параметр значение параметр значение ...

  Аргументы x и y задают координаты точки, используемой для размещения окна на экране (подробнее размещение текста описано ниже при описании параметра -anchor). За координатами могут следовать несколько пар параметр-значение, каждая из которых устанавливает значение одного из параметров конфигурации элемента. Такие же наборы параметр-значение используются для изменения значений параметров с помощью команды примитива itemconfigure. Окна поддерживают следующие параметры:

  -anchor положениеОпоры
    ПоложениеОпоры указывает способ размещения окна по отношению к опорной точке элемента. Параметр может принимать произвольное значение, воспринимаемое командой Tk_GetAnchor. Так, если параметр имеет значение center, то в опорной точке располагается центр текста; значение n указывает что в опорной точке располагается верхняя центральная точка текста и т.д. По умолчанию параметр имеет значение center.
  -height пиксели
    Задает высоту окна элемента. Аргумент пиксели может иметь вид, описанный выше (см. "Координаты"). Если параметр не задан или если его значением является пустая строка, то высота окна определяется его содержимым.
  -tags списокТегов
    Задает набор тегов, относящихся к элементу. СписокТегов представляет собой список имен тегов, замещающий имеющиеся теги элемента. СписокТегов может быть пустым.
  -width пиксели
    Задает ширину окна элемента. Аргумент пиксели может иметь вид, описанный выше (см. "Координаты"). Если параметр не задан или если его значением является пустая строка, то ширина окна определяется его содержимым.
  -window имяПути
    Приписывает данному элементу окно. Окно, заданное аргументом имяПути, должно быть либо потомком примитива канвы, либо потомком одного из наследников примитива канвы. ИмяПути может и не указывать окно верхнего уровня.

Замечание. Ограничения на управление окнами не позволяют выводить графические элементы (такие, как кривые и двуцветные изображения) поверх окон.

### ТИПЫ ЭЛЕМЕНТОВ, ОПРЕДЕЛЯЕМЫЕ В ПРИЛОЖЕНИЯХ

В конкретных приложениях можно определять новые типы элементов для примитивов канвы с помощью C кода. Описание этой возможности приведено в документации для Tk_CreateItem.

### ПРЕДПОЧТЕНИЯ

В текущей реализации новая канва не имеет никакого поведения по умолчанию; для определения этого поведения необходимо явно выполнить команды Tcl.