Russian Language English Language

Models, methods and tools used in the designing of distributed information systems

Graphic interface FLOGOL function-logical programming system objects visualizing features

Directed relations schemes net interpretation visualizing dynamics implementation.

Context-sensitive structured expression editor for flogol functional-logic high-level programming system


Express information

Archive of issues

The journal editoral board

News subscription

Guestbook

Submit of manuscripts

Mail us


Backwards




Place for sale
Представления динамики объектов

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

Бебчик Ан.М.

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

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

В работе рассматриваются вопросы, связанные с визуализацией перемещений объектов сетевого представления схем отношений [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.