Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

TCanvas [D6, XP]


Страницы:   1 2

alll_23 ©   (2007-11-13 16:46:00) 

Здравствуйте, я делаю программу по   графическому построению графа(в качестве вершин графа у меня применяется компонент TShape(создаётся динамически по действию), в качесве рёбер просто ресую линию на ТImage методами MoveTo и LineTo при этом параллельно в матрицу инцендентности(извените если не правильно) заносится еденичка для тех вершин от которой до которой прорисовывается линия(марица нулевая динамическая кол-во вершин на кол-во вершин )  и всё
у меня нормально работает(соеденяю вершины разрываю всё это отображается в матрице и в графическом представлении связей  на экране), разрывая связи в матрицу присваевается ноль а линия прорисовывалась белым цветом так как я не знаю каким методом правильно ее стереть. Но вопрос в следующем: я хочу премещать
Вершину при этом должны прорисовываться все ёё связи тоже это получается но не совсем, не пойму как стереть статые координаты и даже если я их "сотру" таким способом как присваевания просто белого цвета на белом фоне тогда у меня сотрётся какая то часть какой то линии которая ёё может пересекать.
Ой вот это я накрутил, вобщем подскажите как при перемещении вершины ёё связи-линии не стирали другие.


alll_23   (2007-11-15 13:20:00) [21]

А что такое Z-order, и что такое недействительная область? Что это и где про это узнать можно?


Anatoly Podgoretsky   (2007-11-13 19:05:00) [22]

В TCanvas никаких линий нет, редакторы так не делают, редактор должен все перисовывать в соотвествии с Z-order, делая недействительной нужную область.


alll_23   (2007-11-13 17:08:00) [23]

Да не нужен мне такой объект у меня всё в матрице ведь хранится!!!


Kolan   (2007-11-13 17:06:00) [24]

Предлогая тебе не пользовать  массив. А завести объект TУзел(можешь сделать его птомком T Shape).

TУзел = class(TShape)
 FСписокСвязаныхУзлов: TСписокСвязаныхУзлов;
end;


И работать с сетью объектов, а не с массивом.


Рамиль   (2007-11-13 17:03:00) [25]


> А ребята пока я сдесь, скажите пожалуйста как избавиться
> от этого мерзкого мерцания на Timage


> Рамиль ©   (13.11.07 16:53) [2]
> И используй TPaintBox.

Ну еще DoubleBuffered можно выставить.


Рамиль   (2007-11-13 17:02:00) [26]

Других методов нет, и не может быть. Ну с натяжкой если XOR ом рисовать. На самом деле Image пихает все в битмап, и перерисовает при поступлении WM_PAINT. А это надо делать тебе самому.

> Дело в том что линий этих может быть много и надо хранить
> данный для методов рисования в массиве

Места жалко что ли?


alll_23   (2007-11-13 17:01:00) [27]

Ну вот смотрите как полезен форум сам дал ответ на свой вопрос правда я думал можно как то пропроще.
А ребята пока я сдесь, скажите пожалуйста как избавиться от этого мерзкого мерцания на Timage, и всё таки скажите как правильно стереть линию может есть такой метод который сотрёт ее и не сотрёт пиксели пересекающих линий.


alll_23   (2007-11-13 16:56:00) [28]

Дело в том что линий этих может быть много и надо хранить данный для методов рисования в массиве


alll_23   (2007-11-13 16:53:00) [29]

Может какими то другими методами


Рамиль   (2007-11-13 16:53:00) [30]

Не пойму проблемы..
Перерисвывай в OnPaint всю видимую область (затирай все и рисуй все линии)
Если надо перерисовать принудительно, например после изменения координат, вызывай Invalidate.
И используй TPaintBox.


Kolan   (2007-11-13 16:48:00) [31]

Итого твой вопрос сводится к:
Как стереть линию, нарисованную на TCanvasметодами MoveTo и LineTo.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо