Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
76
Добавлен:
02.04.2015
Размер:
8.79 Mб
Скачать
          1. Начало координат не в (0,0) и начальный прямоугольник не в (0,0)

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

Координаты:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

          1. Братские регионы

Кроме родителя, регион может иметь "братьев", т.е. другие регионы, имеющие того же родителя. Регион знает только о своих двух братьях – о том, который непосредственно перед ним, и том, который непосредственно за ним.

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

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

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

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