canvas
-
ИМЯ
- canvas — Создание и управление виджетами гиперграфической поверхности рисования «canvas»
- СИНТАКСИС
- СТАНДАРТНЫЕ ПАРАМЕТРЫ
-
-background или -bg, background, Background
- -borderwidth или -bd, borderWidth, BorderWidth
- -cursor, cursor, Cursor
- -highlightbackground, highlightBackground, HighlightBackground
- -highlightcolor, highlightColor, HighlightColor
- -highlightthickness, highlightThickness, HighlightThickness
- -insertbackground, insertBackground, Цвет_переднего_плана
- -insertborderwidth, insertBorderWidth, BorderWidth
- -insertofftime, insertOffTime, Время_выключения
- -insertontime, insertOnTime, Время_включения
- -insertwidth, insertWidth, InsertWidth
- -relief, relief, Relief
- -selectbackground, selectBackground, Цвет_переднего_плана
- -selectborderwidth, selectBorderWidth, BorderWidth
- -selectforeground, selectForeground, Цвет_заднего_плана
- -takefocus, takeFocus, TakeFocus
- -xscrollcommand, xScrollCommand, Команда_прокрутки
- -yscrollcommand, yScrollCommand, Команда_прокрутки
- -borderwidth или -bd, borderWidth, BorderWidth
- ПАРАМЕТРЫ, СПЕЦИФИЧНЫЕ ДЛЯ ВИДЖЕТОВ
-
-closeenough, closeEnough, CloseEnough
- -confine, confine, Confine
- -height, height, Height
- -scrollregion, scrollRegion, ScrollRegion
- -state, state, State
- -width, width, Ширина
- -xscrollincrement, xScrollIncrement, Приращение_прокрутки
- -yscrollincrement, yScrollIncrement, Приращение_прокрутки
- -confine, confine, Confine
- ВВЕДЕНИЕ
- СПИСОК ОТОБРАЖЕНИЯ
- ИДЕНТИФИКАТОРЫ И ТЕГИ ЭЛЕМЕНТОВ
- КООРДИНАТЫ
- ПРЕОБРАЗОВАНИЯ
- ИНДЕКСЫ
-
число
- конец
- вставка
- выбор.первый
- выбор.последний
- @x,y
- конец
- ШАБЛОНЫ ШТРИХОВ
- КОМАНДА ВИДЖЕТА
- имя_пути raise тегИлиId ?вышеЭтого?
- имя_пути rchars тегИлиId первый последний строка
- имя_пути scale тегИлиId xНачало yНачало xМасштаб yМасштаб
- имя_пути scan параметр аргументы
- имя_пути select параметр ?тегИлиId аргумент?
- имя_пути type тегИлиId
- имя_пути xview ?аргументы?
- имя_пути yview ?аргументы?
- ОБЗОР ТИПОВ ЭЛЕМЕНТОВ
- ОБЩИЕ ПАРАМЕТРЫ ЭЛЕМЕНТОВ
- СТАНДАРТНЫЕ ТИПЫ ЭЛЕМЕНТОВ
- ЭЛЕМЕНТЫ ДУГ
-
-extent degrees
- -start degrees
- -style type
- -start degrees
- ЭЛЕМЕНТЫ БИТМАП
-
-background color
- -activebackground color
- -disabledbackground color
- -bitmap bitmap
- -activebitmap bitmap
- -disabledbitmap bitmap
- -foreground color
- -activeforeground color
- -disabledforeground color
- -activebackground color
- ЭЛЕМЕНТЫ ИЗОБРАЖЕНИЙ
-
-image name
- -activeimage name
- -disabledimage name
- -activeimage name
- ЭЛЕМЕНТЫ ЛИНИЙ
-
-arrow where
- -arrowshape shape
- -capstyle style
- -joinstyle style
- -smooth smoothMethod
- -splinesteps number
- -arrowshape shape
- ЭЛЕМЕНТЫ ОВАЛОВ
- ЭЛЕМЕНТЫ МНОГОУГОЛЬНИКОВ
-
-joinstyle style
- -smooth boolean
- -splinesteps number
- -smooth boolean
- ЭЛЕМЕНТЫ ПРЯМОУГОЛЬНИКОВ
- ЭЛЕМЕНТЫ ТЕКСТА
-
-angle rotationDegrees
- -font fontName
- -justify how
- -text string
- -underline
- -width lineLength
- -font fontName
- ЭЛЕМЕНТЫ ОКОН
-
-height pixels
- -width pixels
- -window pathName
- -width pixels
- ТИПЫ ЭЛЕМЕНТОВ, ОПРЕДЕЛЯЕМЫЕ ПРИЛОЖЕНИЕМ
- ВЯЗКИ
- АВТОРСКИЕ ПРАВА
- СМОТРИТЕ ТАКЖЕ
- КЛЮЧЕВЫЕ СЛОВА
Название
canvas — Создание и управление виджетами области рисования 'canvas' гиперграфикиСинопсис
canvaspathName ?options?Стандартные параметры
-
-background или -bg, background, Background
- -borderwidth или -bd, borderWidth, BorderWidth
- -cursor, cursor, Cursor
- -highlightbackground, highlightBackground, HighlightBackground
- -highlightcolor, highlightColor, HighlightColor
- -highlightthickness, highlightThickness, HighlightThickness
- -insertbackground, insertBackground, Foreground
- -insertborderwidth, insertBorderWidth, BorderWidth
- -insertofftime, insertOffTime, OffTime
- -insertontime, insertOnTime, OnTime
- -insertwidth, insertWidth, InsertWidth
- -relief, relief, Relief
- -selectbackground, selectBackground, Foreground
- -selectborderwidth, selectBorderWidth, BorderWidth
- -selectforeground, selectForeground, Background
- -takefocus, takeFocus, TakeFocus
- -xscrollcommand, xScrollCommand, ScrollCommand
- -yscrollcommand, yScrollCommand, ScrollCommand
- -borderwidth или -bd, borderWidth, BorderWidth
Параметры, специфичные для виджета
- Имя в командной строке: -closeenough
- Имя базы данных: closeEnough
- Класс базы данных: CloseEnough
- Имя базы данных: closeEnough
- Указывает значение с плавающей точкой, определяющее, насколько близко должен быть курсор мыши к элементу, чтобы он считался «внутри» элемента. По умолчанию равно 1,0.
- Имя в командной строке: -confine
- Имя базы данных: confine
- Класс базы данных: Confine
- Имя базы данных: confine
- Указывает булево значение, которое определяет, разрешено ли устанавливать область просмотра холста за пределами области, определенной аргументом scrollRegion. По умолчанию true, что означает, что область просмотра будет ограничена областью прокрутки.
- Имя в командной строке: -height
- Имя базы данных: height
- Класс базы данных: Height
- Имя базы данных: height
- Указывает желаемую высоту окна, которую виджет холста должен запросить у менеджера геометрии. Значение можно указать в любом из форматов, описанных в разделе КООРДИНАТЫ ниже.
- Имя в командной строке: -scrollregion
- Имя базы данных: scrollRegion
- Класс базы данных: ScrollRegion
- Имя базы данных: scrollRegion
- Указывает список из четырех координат, описывающих левую, верхнюю, правую и нижнюю координаты прямоугольной области. Эта область используется для прокрутки и считается границей информации на холсте. Каждая из координат может быть указана в любом из форматов, приведенных в разделе КООРДИНАТЫ ниже.
- Имя в командной строке: -state
- Имя базы данных: state
- Класс базы данных: State
- Имя базы данных: state
- Изменяет состояние холста по умолчанию, где state может быть установлено на одно из значений: normal, disabled или hidden. У отдельных объектов холста есть свой собственный параметр состояния, который может переопределять состояние по умолчанию. Многие параметры могут принимать отдельные значения, чтобы внешний вид элемента был различным в разных ситуациях. Параметры, начинающиеся с active, управляют внешним видом, когда курсор мыши находится над элементом, а параметры, начинающиеся с disabled, управляют внешним видом, когда состояние отключено. Элементы холста, которые disabled, не реагируют на привязки холста.
- Имя в командной строке: -width
- Имя базы данных: width
- Класс базы данных: width
- Имя базы данных: width
- Указывает желаемую ширину окна, которую виджет холста должен запросить у менеджера геометрии. Значение можно указать в любом из форматов, описанных в разделе КООРДИНАТЫ ниже.
- Имя в командной строке: -xscrollincrement
- Имя базы данных: xScrollIncrement
- Класс базы данных: ScrollIncrement
- Имя базы данных: xScrollIncrement
- Указывает приращение для горизонтальной прокрутки в любом из обычных форматов, разрешенных для расстояний на экране. Если значение этого параметра больше нуля, горизонтальная область просмотра в окне будет ограничена таким образом, что координата холста x на левом краю окна всегда является четным кратным xScrollIncrement; кроме того, единицы прокрутки (например, изменение области просмотра при выборе стрелок влево и вправо полосы прокрутки) также будут xScrollIncrement. Если значение этого параметра меньше или равно нулю, горизонтальная прокрутка не ограничена.
- Имя в командной строке: -yscrollincrement
- Имя базы данных: yScrollIncrement
- Класс базы данных: ScrollIncrement
- Имя базы данных: yScrollIncrement
- Указывает приращение для вертикальной прокрутки в любом из обычных форматов, разрешенных для расстояний на экране. Если значение этого параметра больше нуля, вертикальная область просмотра в окне будет ограничена таким образом, что координата холста y в верхней части окна всегда является четным кратным yScrollIncrement; кроме того, единицы прокрутки (например, изменение области просмотра при выборе стрелок вверх и вниз полосы прокрутки) также будут yScrollIncrement. Если значение этого параметра меньше или равно нулю, вертикальная прокрутка не ограничена.
Введение
Команда canvas создает новое окно (указанное аргументом pathName) и преобразует его в виджет холста. Дополнительные параметры, описанные выше, могут быть указаны в командной строке или в базе данных параметров для настройки аспектов холста, таких как цвета и объемный рельеф. Команда canvas возвращает свой аргумент pathName. В момент вызова этой команды не должно существовать окна с именем pathName, но родитель pathName должен существовать.Виджеты холста реализуют структурированную графику. Холст отображает любое количество элементов, которые могут быть прямоугольниками, кругами, линиями и текстом. Элементы могут быть изменены (например, перемещены или перекрашены), и команды могут быть связаны с элементами аналогично тому, как команда bind позволяет привязывать команды к виджетам. Например, определенная команда может быть связана с событием <Button-1>, так что команда вызывается всякий раз, когда нажимается кнопка 1 при наведении курсора мыши на элемент. Это означает, что элементы на холсте могут иметь поведение, определяемое Tcl-скриптами, связанными с ними.
Список отображения
Элементы на холсте упорядочены для отображения, при этом первый элемент в списке отображения отображается первым, за ним следующий элемент в списке и так далее. Элементы, находящиеся позже в списке отображения, затемняют те, которые находятся раньше в списке отображения, и иногда их называют «находящимися сверху» по сравнению с предыдущими элементами. Когда создается новый элемент, он помещается в конец списка отображения, поверх всего остального. Команды виджетов могут использоваться для изменения порядка списка отображения.Элементы окна являются исключением из вышеуказанных правил. Подлежащие системы окон требуют, чтобы они всегда отображались поверх других элементов. Кроме того, порядок стекирования элементов окна не изменяется ни одной из команд виджета холста; вместо этого нужно использовать команды Tk raise и lower.
Идентификаторы и теги элементов
Элементы на холсте могут быть названы двумя способами: по идентификатору или по тегу. Каждый элемент имеет уникальный идентификационный номер, который присваивается этому элементу при его создании. Идентификатор элемента никогда не меняется, и номера идентификаторов никогда не повторно используются в течение срока действия виджета холста.Каждый элемент также может иметь любое количество тегов, связанных с ним. Тег — это просто строка символов, и он может принимать любую форму, кроме целого числа. Например, «x123» допустимо, но «123» — нет. Один и тот же тег может быть связан со многими разными элементами. Это обычно делается для группировки элементов различными интересными способами; например, все выделенные элементы могут быть помечены тегом «selected».
Тег all неявно связан с каждым элементом на холсте; он может использоваться для вызова операций на все элементы на холсте.
Тег current управляется автоматически Tk; он относится к текущему элементу, который является самым верхним элементом, чья область рисования охватывает положение курсора мыши (различные типы элементов интерпретируют это по-разному; см. документацию по отдельным типам элементов для получения подробностей). Если мышь не находится на холсте или не находится над элементом, ни один элемент не имеет тега current.
При указании элементов в командах виджета холста, если спецификатор является целым числом, предполагается, что он относится к одному элементу с этим идентификатором. Если спецификатор не является целым числом, предполагается, что он относится ко всем элементам на холсте, имеющим совпадающий тег. Символ tagOrId используется ниже для обозначения того, что аргумент указывает либо идентификатор, выбирающий один элемент, либо тег, выбирающий ноль или более элементов.
tagOrId может содержать логические выражения тегов, используя операторы: «&&», «||», «^», «!» и скобки подвыражений. Например:
.c find withtag {(a&&!b)||(!a&&b)} или эквивалентно: .c find withtag {a^b} найдут только те элементы, которые имеют либо тег «a», либо «b», но не оба. Некоторые команды виджетов работают только с одним элементом за раз; если tagOrId указан таким образом, что называет несколько элементов, то стандартным поведением является использование первого (самого низкого) из этих элементов в списке отображения, который подходит для команды. Исключения указаны в описаниях команд виджета ниже.
Координаты
Все координаты, связанные с холстами, хранятся как числа с плавающей точкой. Координаты и расстояния задаются в единицах экрана, которые являются числами с плавающей точкой, необязательно за которыми следуют несколько букв. Если буквы нет, то расстояние измеряется в пикселях. Если буква m, то расстояние измеряется в миллиметрах на экране; если c — в сантиметрах; i — в дюймах, а p — в пунктах принтера (1/72 дюйма). Более крупные значения y-координат соответствуют точкам ниже на экране; более крупные значения x-координат соответствуют точкам правее. Координаты могут быть указаны либо как четное количество параметров, либо как единственный параметр списка, содержащий четное количество значений координат x и y.Преобразования
Обычно начало системы координат холста находится в верхнем левом углу окна, содержащего холст. Можно скорректировать начало системы координат холста относительно начала координат окна с помощью команд виджета xview и yview; это обычно используется для прокрутки. Холсты не поддерживают масштабирование или вращение системы координат холста относительно системы координат окна.Отдельные элементы могут быть перемещены или масштабированы с помощью команд виджетов, описанных ниже, но они не могут быть повернуты.
Обратите внимание, что по умолчанию начало видимой области холста совпадает с началом всего окна, что упрощает работу с привязками, использующими положение мыши; для этого вам нужно использовать только команды виджета canvasx и canvasy, если вы измените начало видимой области. Однако это также означает, что любая рамка фокуса (управляемая параметром -highlightthickness) и граница окна (управляемая параметром -borderwidth) должны быть учтены, прежде чем вы получите видимую область холста.
Индексы
Элементы текста поддерживают понятие индекса для идентификации определенных позиций внутри элемента. Аналогичным образом, элементы линии и многоугольника поддерживают индекс для идентификации, вставки и удаления подмножеств их координат. Индексы используются для таких команд, как вставка или удаление диапазона символов или координат, и установка позиции курсора вставки. Индекс можно указать несколькими способами, и разные типы элементов могут поддерживать разные формы для указания индексов. Элементы текста поддерживают следующие формы для индекса; если вы определите новые типы элементов, похожих на текст, рекомендуется поддерживать как можно больше из этих форм. Обратите внимание, что можно сослаться на символ, непосредственно следующий за последним символом в элементе текста; это необходимо для таких задач, как вставка нового текста в конец элемента. Линии и многоугольники не поддерживают курсор вставки и выделение. Их индексы всегда должны быть четными, поскольку координаты всегда задаются парами.- number
- Десятичное число, определяющее позицию нужного символа в элементе текста. 0 соответствует первому символу, 1 — следующему и так далее. Если индексы нечетные для строк и многоугольников, они будут автоматически уменьшены на единицу. Число меньше 0 обрабатывается как ноль, а число больше длины элемента текста — как длина элемента текста. Для многоугольников числа меньше 0 или больше длины списка координат будут скорректированы путем добавления или вычитания длины, пока результат не окажется между нулем и длиной включительно.
- end
- Относится к символу или координате, расположенной сразу после последнего в элементе (равно количеству символов или координат в элементе).
- insert
- Относится к символу, перед которым в данном элементе отображается курсор вставки. Недействительно для строк и многоугольников.
- sel.first
- Относится к первому выделенному символу в элементе. Если выделение не находится в этом элементе, этот формат недопустим.
- sel.last
- Относится к последнему выделенному символу в элементе. Если выделение не находится в этом элементе, этот формат недопустим.
- @x,y
- Относится к символу или координате в точке, заданной x и y, где x и y указаны в системе координат холста. Если x и y лежат вне координат, охватываемых элементом текста, они относятся к первому или последнему символу строки, которая ближе всего к заданной точке.
Паттерны штриховки
Многие элементы поддерживают понятие паттерна штриховки для контуров.Первый возможный синтаксис — список целых чисел. Каждый элемент представляет количество пикселей отрезка линии. Только нечетные сегменты рисуются с использованием цвета «контура». Другие сегменты рисуются прозрачными.
Второй возможный синтаксис — список символов, содержащий только 5 возможных символов «.,-_ ». Пробел может быть использован для увеличения промежутка между другими элементами линии и не может стоять на первом месте в строке. Некоторые примеры:
-dash . → -dash {2 4}
-dash - → -dash {6 4}
-dash -. → -dash {6 4 2 4}
-dash -.. → -dash {6 4 2 4 2 4}
-dash {. } → -dash {2 8}
-dash , → -dash {4 4} Основное отличие этого синтаксиса от предыдущего заключается в том, что он сохраняет форму. Это означает, что все значения в списке штриховки будут умножены на ширину линии перед отображением. Это гарантирует, что «.» всегда будет отображаться как точка, а «-» всегда как тире независимо от ширины линии.
На системах, которые поддерживают только ограниченный набор паттернов штриховки, паттерн штриховки будет отображаться как ближайший доступный паттерн. Например, в Windows доступны только первые 4 из приведенных выше примеров. Последние 2 примера будут отображаться идентично первому.
Команда виджета
Команда canvas создает новую команду Tcl с именем pathName. Эта команда может использоваться для вызова различных операций над виджетом. Она имеет следующий общий вид:pathName option ?arg arg ...?Option и args определяют точное поведение команды. Для виджетов холста возможны следующие команды виджета:
Обзор типов элементов
Разделы ниже описывают различные типы элементов, поддерживаемые виджетами области рисования. Каждый тип элемента характеризуется двумя вещами: во-первых, формой команды create, используемой для создания экземпляров типа; и, во-вторых, набором параметров конфигурации для элементов этого типа, которые могут использоваться в командах виджета create и itemconfigure. Большинство элементов не поддерживают индексацию или выделение или связанные с ними команды, такие как index и insert. В тех случаях, когда элементы поддерживают эти возможности, это явно отмечено в описаниях ниже. В настоящее время элементы текста, линии и многоугольника поддерживают эти возможности. Для линий и многоугольников механизм индексации используется для изменения координат элемента.Общие параметры элементов
Многие элементы используют общий набор параметров. Эти параметры объяснены здесь, и далее на них ссылаются для краткости при описании каждого типа виджета.Стандартные типы элементов
Элементы типа arc
Элементы типа arc отображаются на экране как области в форме дуги. Дуга — это сектор овала, ограниченный двумя углами (заданными параметрами -start и -extent) и отображаемый одним из нескольких способов (заданных параметром -style). Дуги создаются с помощью команд виджетов следующего формата:pathName create arc x1 y1 x2 y2 ?option value ...? pathName create arc coordList ?option value ...?Аргументы x1, y1, x2 и y2 или coordList задают координаты двух диагонально противоположных углов прямоугольной области, охватывающей овал, определяющий дугу. После координат может следовать любое количество пар option-value, каждая из которых устанавливает один из параметров конфигурации элемента. Эти же пары option-value могут использоваться в командах виджета itemconfigure для изменения конфигурации элемента. Элемент дуги становится текущим, когда указатель мыши находится над любой нарисованной частью или (если полностью прозрачен) над частью, которая была бы нарисована, если бы параметры -fill и -outline были не пустыми.
Следующие стандартные параметры поддерживаются дугами:
-dash
-activedash
-disableddash
-dashoffset
-fill
-activefill
-disabledfill
-offset
-outline
-activeoutline
-disabledoutline
-outlineoffset
-outlinestipple
-activeoutlinestipple
-disabledoutlinestipple
-stipple
-activestipple
-disabledstipple
-state
-tags
-width
-activewidth
-disabledwidth
- -extent degrees
- Задаёт размер углового диапазона, занимаемого дугой. Диапазон дуги простирается на degrees градусов против часовой стрелки от начального угла, заданного параметром -start. Degrees может быть отрицательным. Если он больше 360 или меньше -360, то используется значение degrees по модулю 360.
- -start degrees
- Задаёт начало углового диапазона, занимаемого дугой. Degrees задаётся в градусах, измеряемых против часовой стрелки от положения 3 часа; может быть как положительным, так и отрицательным.
- -style type
- Задаёт способ рисования дуги. Если type равен pieslice (по умолчанию), то область дуги определяется сектором периметра овала плюс два отрезка прямой, один между центром овала и каждым концом секторного участка периметра. Если type равен chord, то область дуги определяется сектором периметра овала плюс один отрезок прямой, соединяющий две конечные точки секторного участка периметра. Если type равен arc, то область дуги состоит только из секторного участка периметра. В последнем случае параметр -fill игнорируется.
Элементы типа bitmap
Элементы типа bitmap отображаются на экране как изображения с двумя цветами, передним и задним планом. Битовые карты создаются с помощью команд виджетов следующего формата:pathName create bitmap x y ?option value ...? pathName create bitmap coordList ?option value ...?Аргументы x и y или coordList (которые должны иметь два элемента) задают координаты точки, используемой для позиционирования битовой карты на экране, как определяется параметром -anchor. После координат может следовать любое количество пар option-value, каждая из которых устанавливает один из параметров конфигурации элемента. Эти же пары option-value могут использоваться в командах itemconfigure для изменения конфигурации элемента. Элемент битовой карты становится текущим, когда указатель мыши находится над любой частью его ограничивающей рамки.
Следующие стандартные параметры поддерживаются битовыми картами:
-anchor
-state
-tags
- -background цвет
- -activebackground цвет
- -disabledbackground цвет
- Указывает цвет, используемый для каждого пикселя с значением «0» в растровом изображении в нормальном, активном и отключенном состояниях. Цвет может иметь любой из форматов, принимаемых функцией Tk_GetColor. Если этот параметр не указан или задан как пустая строка, то ничего не отображается для пикселей с нулевым значением; это создаёт эффект прозрачности.
- -bitmap растровое изображение
- -activebitmap растровое изображение
- -disabledbitmap растровое изображение
- Указывает растровые изображения, отображаемые в элементе в нормальном, активном и отключенном состояниях. Растровое изображение может иметь любой из форматов, принимаемых функцией Tk_GetBitmap.
- -foreground цвет
- -activeforeground цвет
- -disabledforeground цвет
- Указывает цвет, используемый для каждого пикселя с значением «1» в растровом изображении в нормальном, активном и отключенном состояниях. Цвет может иметь любой из форматов, принимаемых функцией Tk_GetColor и по умолчанию равен черному.
Элементы изображения
Элементы типа image используются для отображения изображений на холсте. Изображения создаются командами виджетов следующего формата:pathName create image x y ?option value ...? pathName create image coordList ?option value ...?Аргументы x и y или список координат задают координаты точки, используемой для позиционирования изображения на экране, как управляется параметром -anchor. После координат может следовать любое количество пар параметр-значение, каждая из которых устанавливает один из параметров конфигурации элемента. Те же пары параметр-значение могут использоваться в командах виджетов itemconfigure для изменения конфигурации элемента. Элемент изображения становится текущим элементом, когда указатель мыши находится над любой частью его ограничивающей рамки.
Следующие стандартные параметры поддерживаются изображениями:
-anchor
-state
-tags
- -image имя
- -activeimage имя
- -disabledimage имя
- Указывает имя изображений, отображаемых в элементе в нормальном, активном и отключенном состояниях. Это изображение должно быть создано ранее командой image create.
Элементы линии
Элементы типа line отображаются на экране как один или несколько соединённых отрезков прямой или кривых. Элементы линии поддерживают операции индексирования координат с помощью команд виджетов dchars, index и insert. Линии создаются с помощью команд виджетов следующего формата:pathName create line x1 y1... xn yn ?option value ...? pathName create line coordList ?option value ...?Аргументы x1 до yn или список координат задают координаты ряда из двух или более точек, описывающих ряд соединённых отрезков прямой. После координат может следовать любое количество пар параметр-значение, каждая из которых устанавливает один из параметров конфигурации элемента. Те же пары параметр-значение могут использоваться в командах itemconfigure для изменения конфигурации элемента. Элемент линии является текущим элементом всякий раз, когда указатель мыши находится над любым отрезком линии, нарисованным или нет, и независимо от того, сглажена ли линия.
Следующие стандартные параметры поддерживаются линиями:
-штриховка
-активнаяштриховка
-отключеннаяштриховка
-смещениештриховки
-заливка
-активнаязаливка
-отключеннаязаливка
-пунктирнаязаливка
-активныйпунктир
-отключенныйпунктир
-состояние
-метки
-ширина
-активнаяширина
-отключеннаяширина
- -стрелка где
- Указывает, будут ли нарисованы наконечники стрелок на одном или обоих концах линии. Где должно иметь одно из значений нет (для отсутствия наконечников), начало (для наконечника на начальной точке линии), конец (для наконечника в конечной точке линии) или оба (для наконечников на обоих концах). По умолчанию используется значение нет.
- -формастрелки форма
- Этот параметр указывает, как рисовать наконечники стрелок. Аргумент форма должен быть списком из трех элементов, каждый из которых задает расстояние в любой из форм, описанных в разделе КООРДИНАТЫ выше. Первый элемент списка задает расстояние вдоль линии от шейки наконечника до его вершины. Второй элемент задает расстояние вдоль линии от хвостовых точек наконечника до вершины, а третий - расстояние от внешнего края линии до хвостовых точек. Если этот параметр не задан, Tk выбирает "разумную" форму.
- -стильконца стиль
- Указывает способы рисования концов линии на концах. Стиль может иметь любое из значений, принимаемых Tk_GetCapStyle (butt, projecting или round). Если этот параметр не задан, по умолчанию используется butt. При рисовании наконечников стрелок стиль концов игнорируется.
- -стильсоединения стиль
- Указывает способы рисования соединений в вершинах линии. Стиль может принимать любое из значений, принимаемых Tk_GetJoinStyle (bevel, miter или round). Если этот параметр не задан, по умолчанию используется round. Если линия содержит только две точки, этот параметр не имеет значения.
- -сглаживание методсглаживания
- методсглаживания должен иметь одну из форм, принимаемых Tcl_GetBoolean или методом сглаживания линии. В ядре поддерживаются только true и raw (при этом bezier является псевдонимом для true), но больше можно добавить во время выполнения. Если задано значение boolean false или пустая строка, сглаживание не применяется. Значение boolean true подразумевает сглаживание true. Если метод сглаживания true, это означает, что линия должна быть нарисована как кривая, представленная набором квадратичных сплайнов: один сплайн рисуется для первого и второго отрезков линии, один для второго и третьего и так далее. Прямые отрезки можно создавать внутри кривой, дублируя конечные точки требуемого отрезка линии. Если метод сглаживания raw, это означает, что линия также должна быть нарисована как кривая, но список координат такой, что первая пара координат (и каждая третья пара координат после нее) является узловой точкой кубической кривой Безье, а другие координаты — контрольными точками кубической кривой Безье. Прямые отрезки можно создавать внутри кривой, делая контрольные точки равными соседним узловым точкам. Если последняя точка является контрольной точкой, а не узловой, она повторяется (один или два раза), чтобы также стать узловой точкой.
- -шагисплайна число
- Указывает степень сглаживания кривых: каждый сплайн будет аппроксимирован числом отрезков линии. Этот параметр игнорируется, если параметр -сглаживание не равен true или raw.
Элементы овалов
Элементы типа овал отображаются как круглые или овальные области на экране. Каждый овал может иметь контур, заливку или то и другое. Овалы создаются с помощью команд виджетов следующего формата:pathName create oval x1 y1 x2 y2 ?option value ...? pathName create oval coordList ?option value ...?Аргументы x1, y1, x2 и y2 или coordList задают координаты двух диагонально противоположных углов прямоугольной области, содержащей овал. Овал будет включать верхний и левый края прямоугольника, но не нижний и правый. Если область является квадратной, получающийся овал будет кругом; в противном случае он будет вытянутым. После координат может быть любое количество пар параметр-значение, каждая из которых задает один из параметров конфигурации элемента. Те же пары параметр-значение могут использоваться в командах виджета itemconfigure для изменения конфигурации элемента. Элемент овала становится текущим, когда указатель мыши находится над любой нарисованной частью или (при полной прозрачности) над частью, которая была бы нарисована, если бы оба параметра -заливка и -контур были бы не пустыми.
Следующие стандартные параметры поддерживаются овалами:
-штриховка
-активнаяштриховка
-отключеннаяштриховка
-смещениештриховки
-заливка
-активнаязаливка
-отключеннаязаливка
-смещение
-контур
-активныйконтур
-отключенныйконтур
-смещениеконтура
-пунктирныйконтур
-активныйпунктирныйконтур
-отключенныйпунктирныйконтур
-пунктирнаязаливка
-активныйпунктир
-отключенныйпунктир
-состояние
-метки
-ширина
-активнаяширина
-отключеннаяширина
Элементы многоугольников
Элементы типа многоугольник отображаются как полигональные или криволинейные заполненные области на экране. Элементы многоугольников поддерживают операции индексирования координат с помощью команд виджетов dchars, index и insert. Многоугольники создаются с помощью команд виджетов следующего формата:pathName create polygon x1 y1 ... xn yn ?option value ...? pathName create polygon coordList ?option value ...?Аргументы x1 через yn или coordList задают координаты трех или более точек, определяющих многоугольник. Первая точка не должна повторяться в качестве последней, чтобы замкнуть фигуру; Tk автоматически замкнёт периферию между первой и последней точками. После координат может быть любое количество параметр-значение пары, каждая из которых задаёт один из параметров конфигурации элемента. Эти же пары имя_параметра-значение могут использоваться в командах itemconfigure для изменения конфигурации элемента. Элемент многоугольника становится текущим, когда указатель мыши находится над любой частью многоугольника, независимо от того, нарисован он или нет, а также от того, сглажена ли его обводка.
Многоугольники поддерживают следующие стандартные параметры:
-dash
-activedash
-disableddash
-dashoffset
-fill
-activefill
-disabledfill
-offset
-outline
-activeoutline
-disabledoutline
-outlineoffset
-outlinestipple
-activeoutlinestipple
-disabledoutlinestipple
-stipple
-activestipple
-disabledstipple
-state
-tags
-width
-activewidth
-disabledwidth
- -joinstyle style
- Определяет способ рисования соединений в вершинах контура. Style может иметь любой из форматов, принятых Tk_GetJoinStyle (bevel, miter или round). Если этот параметр не указан, по умолчанию используется round.
- -smooth boolean
- Boolean должен иметь один из форматов, принятых Tcl_GetBoolean или метод сглаживания линии. В ядре поддерживаются только true и raw (причём bezier является алиасом для true), но могут быть добавлены и другие методы во время выполнения. Если указано значение boolean false или пустая строка, сглаживание не применяется. Значение boolean true предполагает сглаживание true. Если метод сглаживания равен true, это означает, что многоугольник должен быть нарисован как кривая, представленная набором квадратичных сплайнов: один сплайн рисуется для первого и второго отрезков линии, один — для второго и третьего и так далее. Прямые отрезки линии можно генерировать в кривой, дублируя конечные точки желаемого отрезка линии. Если метод сглаживания равен raw, это означает, что многоугольник также должен быть нарисован как кривая, но список координат такой, что первая пара координат (и каждая третья пара координат после неё) является точкой узла на кубической кривой Безье, а другие координаты — контрольными точками на кубической кривой Безье. Прямые отрезки линии можно генерировать в кривой, сделав контрольные точки равными соседним узловым точкам. Если последняя точка не является второй точкой пары контрольных точек, она повторяется (один или два раза), чтобы она также стала второй точкой пары контрольных точек (соответствующая узловая точка будет первой контрольной точкой).
- -splinesteps number
- Определяет степень сглаживания кривых: каждый сплайн будет аппроксимирован number отрезками прямой. Этот параметр игнорируется, если параметр -smooth не равен true или raw.
Элементы многоугольников отличаются от других элементов, таких как прямоугольники, овалы и дуги, тем, что внутренние точки считаются «внутри» многоугольника (например, для целей команд виджета find closest и find overlapping), даже если он не заполнен. Для большинства других типов элементов внутренняя точка считается внутри элемента только в том случае, если элемент заполнен или если у него нет ни заливки, ни контура. Если вам нужен незаполненный многоугольник, внутренние точки которого не считаются внутри многоугольника, используйте элемент линии.
Прямоугольные элементы
Элементы типа rectangle отображаются как прямоугольные области на дисплее. Каждый прямоугольник может иметь контур, заливку или оба. Прямоугольники создаются командами виджетов следующего формата:pathName create rectangle x1 y1 x2 y2 ?option value ...? pathName create rectangle coordList ?option value ...?Аргументы x1, y1, x2 и y2 или coordList (который должен иметь четыре элемента) задают координаты двух диагонально противоположных углов прямоугольника (прямоугольник будет включать верхние и левые края, но не нижние и правые края). После координат может следовать любое количество пар имя_параметра-значение, каждая из которых устанавливает один из параметров конфигурации элемента. Эти же пары имя_параметра-значение могут использоваться в командах виджета itemconfigure для изменения конфигурации элемента. Элемент прямоугольника становится текущим, когда указатель мыши находится над любой нарисованной частью или (если полностью прозрачный) над частью, которая была бы нарисована, если бы параметры -fill и -outline были не пустыми.
Прямоугольники поддерживают следующие стандартные параметры:
-dash
-activedash
-disableddash
-dashoffset
-fill
-activefill
-disabledfill
-offset
-outline
-activeoutline
-disabledoutline
-outlineoffset
-outlinestipple
-activeoutlinestipple
-disabledoutlinestipple
-stipple
-activestipple
-disabledstipple
-state
-tags
-width
-activewidth
-disabledwidth
Текстовые элементы
Текстовый элемент отображает строку символов на экране в одной или нескольких строках. Текстовые элементы поддерживают индексирование, редактирование и выделение с помощью команды виджета dchars, команды виджета focus, icursor виджет-команды, виджет-команды index, insert виджет-команды и select виджет-команды. Элементы текста создаются с помощью виджет-команд следующего формата:pathName create text x y ?option value ...? pathName create text coordList ?option value ...?Аргументы x и y или coordList (которые должны иметь два элемента) задают координаты точки, используемой для позиционирования текста на дисплее (см. параметры ниже для получения дополнительной информации о том, как отображается текст). После координат может следовать любое количество пар option-value, каждая из которых устанавливает один из параметров конфигурации элемента. Те же самые пары option-value могут использоваться в командах виджета itemconfigure для изменения конфигурации элемента. Элемент текста становится текущим элементом, когда указатель мыши находится над любой частью его ограничивающей рамки.
Следующие стандартные параметры поддерживаются элементами текста:
-anchor
-fill
-activefill
-disabledfill
-stipple
-activestipple
-disabledstipple
-state
-tags
- -angle rotationDegrees
- RotationDegrees указывает на сколько градусов вращать текст против часовой стрелки вокруг точки позиционирования текста; может принимать любое значение с плавающей точкой от 0,0 до 360,0. Например, если rotationDegrees равно 90, то текст будет отображаться вертикально снизу вверх. По умолчанию этот параметр равен 0,0.
- -font fontName
- Указывает шрифт, используемый для элемента текста. FontName может быть любой строкой, допустимой для Tk_GetFont. Если этот параметр не указан, он по умолчанию устанавливается на шрифт, зависящий от системы.
- -justify how
- Указывает способ выравнивания текста в пределах его ограничивающей области. How должно быть одним из значений left, right или center. Этот параметр будет иметь значение только в том случае, если текст отображается в несколько строк. Если параметр опущен, он по умолчанию устанавливается на left.
- -text string
- String задаёт символы, которые должны отображаться в элементе текста. Символы новой строки вызывают переводы строк. Символы в элементе также могут быть изменены с помощью виджет-команд insert и delete. По умолчанию этот параметр устанавливается на пустую строку.
- -underline
- Указывает целочисленный индекс символа в тексте, который необходимо подчеркнуть. 0 соответствует первому символу отображаемого текста, 1 следующему символу и т.д. -1 означает, что никакое подчеркивание не должно быть нарисовано (если весь элемент текста должен быть подчеркнут, вместо этого следует использовать соответствующий шрифт).
- -width lineLength
- Указывает максимальную длину строки текста в любом из форматов, описанных в разделе КООРДИНАТЫ выше. Если этот параметр равен нулю (по умолчанию), текст разбивается на строки только в символах новой строки. Однако, если этот параметр не равен нулю, любая строка, которая будет длиннее, чем lineLength, разбивается непосредственно перед символом пробела, чтобы сделать строку короче, чем lineLength; символ пробела обрабатывается так, как будто это символ новой строки.
Элементы окна
Элементы типа window отображают определённое окно в заданной позиции на холсте. Элементы окна создаются с помощью виджет-команд следующего формата:pathName create window x y ?option value ...? pathName create window coordList ?option value ...?Аргументы x и y или coordList (которые должны иметь два элемента) задают координаты точки, используемой для позиционирования окна на дисплее, как управляется параметром -anchor. После координат может следовать любое количество пар option-value, каждая из которых устанавливает один из параметров конфигурации элемента. Эти же самые пары option-value могут использоваться в командах itemconfigure Команды виджета для изменения конфигурации элемента. Теоретически, элемент окна становится текущим элементом, когда указатель мыши находится над любой частью его области, но на практике это обычно не происходит, потому что указатель мыши перестаёт быть над холстом в этот момент.
Следующие стандартные опции поддерживаются элементами окна:
-anchor
-state
-tags
- -height пиксели
- Устанавливает высоту окна элемента. Пиксели могут иметь любой из форматов, описанных в разделе КООРДИНАТЫ выше. Если этот параметр не указан или задан как ноль, то окну присваивается высота, запрошенная им внутри.
- -width пиксели
- Устанавливает ширину окна элемента. Пиксели могут иметь любой из форматов, описанных в разделе КООРДИНАТЫ выше. Если этот параметр не указан или задан как ноль, то окну присваивается ширина, запрошенная им внутри.
- -window имя_пути
- Устанавливает окно, которое необходимо ассоциировать с этим элементом. Окно, заданное по имени_пути, должно быть либо дочерним элементом виджета холста, либо потомком холста. Имя_пути не может ссылаться на окно верхнего уровня.
Примечание: из-за ограничений в управлении окнами невозможно рисовать другие графические элементы (например, линии и изображения) поверх элементов окна. Элемент окна всегда перекрывает любые графические элементы, которые с ним перекрываются, независимо от их порядка в списке отображения. Также обратите внимание, что элементы окна, в отличие от других элементов холста, не обрезаются для отображения границами содержащего их холста, а вместо этого обрезаются родительским виджетом окна, указанного параметром -window; когда родительским виджетом является холст, это означает, что элемент окна может перекрывать границы холста.
Определяемые приложением типы элементов
Некоторые приложения могут определять новые типы элементов для виджетов холста с помощью кода C. Смотрите документацию для Tk_CreateItemType.Связывания
В текущей реализации новые холсты не получают никакого поведения по умолчанию: вам нужно выполнить явные команды Tcl, чтобы придать холсту его поведение.Благодарности
Виджет холста Tk — это очевидное заимствование идей из программы Joel Bartlett's ezd. Ezd предоставляет структурированную графику в среде Scheme и предшествовал холстам на год или два. Его простые механизмы размещения и анимации графических объектов вдохновили функции холстов.См. также
bind, font, image, scrollbar
Licensed under Tcl/Tk terms
https://www.tcl.tk/man/tcl/TkCmd/canvas.htm
Licensed under Tcl/Tk terms
https://www.tcl.tk/man/tcl/TkCmd/canvas.htm