Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Литература / photon_old.doc
Скачиваний:
45
Добавлен:
02.04.2015
Размер:
8 Мб
Скачать
☆

Начало координат в (0,0) и начальный прямоугольник в (0,0)

По умолчанию приложение использует для регионов следующий подход (разновидности регионов описаны в разделе "Оконный менеджер Photon'а" приложения "Архитектура Photon'а").

Координаты:

Начальные = (0,0)

Верхний левый угол начального прямоугольника = (0,0)

Нижний правый угол начального прямоугольника = (100,100)

Начало координат в (0,0) и начальный прямоугольник не в (0,0)

Следующий пример показывает подход, обычно используемый для регионов, которые заполняют целиком координатное пространство, например, для региона устройств и региона рабочей области (workspace), верхний левый угол имеет координаты (-32768, -32768) и нижний правый – (32767, 32767).

Координаты:

Начальные = (0,0)

Верхний левый угол начального прямоугольника = (-50,-50)

Нижний правый угол начального прямоугольника = (50,50)

Многие виджеты создают регионы, верхние левые углы которых имеют отрицательные координаты, так что начало координат холста виджета находится в (0,0):

Начало координат не в (0,0) и начальный прямоугольник не в (0,0)

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

Координаты:

Начальные: = (-50,-50)

Верхний левый угол начального прямоугольника = (0,0)

Нижний правый угол начального прямоугольника = (100,100)

О регионах потомка

Начало координат региона потомка задаётся относительно начала координат родителя. Таким образом, когда регион перемещается, все его потомки автоматически перемещаются вместе с ним. И также, когда регион уничтожается, уничтожаются его потомки.

 Если Вы хотите сделать регион большим по размеру, чем какой-либо другой регион Вашего приложения, сделайте его потомком корневого региона, вызвав функцию PhRegionOpen() или PhRegionChange(), задав Ph_ROOT_RID как родительский.

Регионы и отсечение событий

Регион может генерировать или получать события только там, где он перекрывается со своим родителем. Например, на следующем рисунке:

  • Потомок 1 может генерировать или получать события во всём своём регионе

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

Рис. 22-2. Регионы и отсечение событий

На основании этого свойства регионов, любая часть региона, которая не перекрывается со своими родителями, в действительности является невидимой.

Месторасположение и иерархия Иерархия регионов:

Рис. 22-3. Иерархия регионов типичной системы Photon'а

В Photon'е каждый регион имеет родительский регион. Эта связь родитель-потомок приводит к появлению иерархии регионов с корневым регионом в вершине. Следующая диаграмма показывает иерархию типичной системы Photon'а:

Родительский регион

Менеджер Photon'а всегда размещает регионы потомков впереди (т.е. в сторону пользователя) своих родителей:

 При открытии региона приложение определяет родителя региона. Если приложение открывает регион, не задавая его родителя, родитель региона устанавливается по умолчанию – базовые регионы становятся потомками корневого региона и окна становятся потомками фонового региона оконного менеджера.

Соседние файлы в папке Литература