BC/NW 2003г., №1(3)/ 15.2

РЕАЛИЗАЦИЯ ДИНАМИКИ ПРИ ВИЗУАЛИЗАЦИИ СЕТЕВОГО ПРЕДСТАВЛЕНИЯ СХЕМ НАПРАВЛЕННЫХ ОТНОШЕНИЙ

Бебчик Ан.М.

(Москва, Московский государственный институт радиотехники,

электроники и автоматики (технический университет), Россия)

В работе рассматриваются вопросы, связанные с визуализацией перемещений объектов сетевого представления схем отношений [1,2], реализованных в составе графического редактора реляционных выражений FLOGOL-системы функционально логического программирования. Необходимые требования к рассматриваемому программному продукту определяются общими принципами визуализации объектов сетевого представления схем отношений, которые подробнее рассмотрены в [3].

 

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

 

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

Второй вариант заключается в перерисовке только выделенных областей изображения. Простейшим методом является построение перемещающихся частей изображения цветом фона, изменение их координат на новые, и полная прорисовка всего нового изображения. Минусом данного метода является то, что изображение может содержать области сплошной закраски, которая производится достаточно долго и тоже вызывает заметные мерцания. Другим методом, который и был реализован, является метод оболочек. То есть каждому графическому объекту привязывается оболочка, описывающая область, которую он занимает. К сложным объектам, таким как, например, дуга, состоящая из многих ребер, привязывается несколько оболочек, покрывающих объект в целом. Изображение формируется в двух экземплярах – одно на экране, а другое в невидимом буфере. Во время перемещения объекта на его старое место, определяемое оболочкой, копируется изображение из буфера. После того, как все такие части изображения скопированы, прорисовываются сами движущиеся объекты.

          В результате применения данного метода мерцание экрана существенно снизилось, однако при большом количестве объектов на экране все же оставалось достаточно заметным. Надо заметить, что по сравнению с полной перерисовкой, мерцание изменило и свой характер – теперь этот эффект наблюдался уже не для всего изображения в целом, а лишь для областей, в которых происходило движение объектов. Для окончательного устранения мерцания (в заданных условиях) было решено отказаться от построения изображения непосредственно на экране. Таким образом, появились два буфера – один для статического изображения, в который помещались объекты, не изменяющие свои геометрические характеристики или положение, так называемый фоновый буфер, другой – буфер изображения, в который копировался фон и помещались изображения движущихся объектов с учетом их текущего состояния.

Опишем принцип действия данного метода. В момент начала перемещения формируется буфер фона, при этом перемещаемые и связанные с ними объекты (например, при перемещении элемента сети изменяется и форма или размер любой дуги, с ним связанной), помечаются как движущиеся и в буфер фона не попадают. Буфер фона формируется один раз за все время перемещения объектов. После того, как буфер фона будет заполнен, он копируется в буфер изображения. Движущиеся объекты с новым положением и, возможно, формой строятся в уже подготовленном буфере изображения, после чего буфер изображения отображается на экране. В качестве буферов использовался стандартный класс TBitmap среды программирования Borland C++Builder. Это позволило использовать стандартные функции рисования, а также быстро копировать сформированное изображение на экран.

 

Реализованный метод позволил получить приемлемые результаты для нескольких сотен объектов на экране. Также заметим, что при невозможности произвести все вычисления, связанные с геометрическими параметрами объектов и их положением в реальном времени, изображение не мигает, а наблюдается эффект скачкообразного движения перемещаемых объектов. Для работы с графикой в операционной системе Windows возможно использование не только средств GDI (Graphic User Interface) , но и DirectDraw. Это также неплохой вариант, но возможны проблемы с работой соответствующих библиотек у пользователя. Средства же GDI работают всегда, если пользователь вообще смог запустить Windows.

 

ЛИТЕРАТУРА

1.     Фальк В.Н. Теория направленных отношений и ее приложения // Дисс. докт. техн. наук. М: – МЭИ. -2001.

2.     Кутепов В.П., Фальк В.Н. Направленные отношения: теория и приложения // Изв. РАН. Техническая кибернетика, 1994. № 4,5.

3.     Бебчик Ал.М., Бебчик Ан.М. Особенности визуализации объектов графического интерфейса FLOGOL-системы функционально-логического программирования // В наст. сборнике. – 2003.