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

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

Помогите работать с TImage [D7]


Благодарный слушатель ©   (2006-10-18 20:08:00) 

1. Как перетаскивать картинку, чтобы она не мигала? Если картике тупо менять Left/Top при движении мышью, тогда картинка будит сильно мигать (часто перерисовываться).
2. Я хачу связать катинки линией (типа диаграмм), при этом линию надо где-нибудь рисовать. Я для рисования линии использую TImage. При этом при щелчке на прозрачную чать компонента TImage на котором рисовали линию сообщение от мыши поступает TImage, а не панели под ней. Я же хочу так: если мышь над прозрачной частью картинки - все сообщения от мыши идут на панель. Подскажите как реализовать. Может есть готовый компонент?
PS: Вообще может кто знает FreeWare -ные компоненты или прожку для рисования блочных диаграмм? Это бы мне очень помогло!


Благодарный слушатель   (2006-10-29 10:39:00) [1]

сделал так:
я рисую все объекты на одной конве (на конве TPaintBox'a).
тк у TPaintBox нет свойства двойной буферизации, я его реализовал сам: Создаю левую имагу. Подсовываю своим объектам канву этой левой имаге для прорисовки, они все на ней рисуют себя. Далее я на нужную мне конву  (TPaintBox'a) копирую эту лувую канву имаге. получается очень быстро и удобно. И никада не мигает! А действия над своими объектами реализовал по такому принципу - TPaintBox передает моему базовуму классу прорисовки все события мыши и клавы, а заправшивает у этого класса курсор и HintText.
Ну а сами мои классы графичсеких объектов используют по полной всю силу наследования! весч! кароче получилось круто. и очень удобно!
И кстати легко можно реализовать масштабирование и Scroll.
хотя с масштабированием возможны проблемы ... стандартны средства уменьшения картинки не впечетляют...


Barloggg   (2006-10-19 09:16:00) [2]


> Если картике тупо менять Left/Top при движении мышью

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


Думкин   (2006-10-19 06:42:00) [3]


> Shopot ©   (18.10.06 20:41) [2]
> Картинка чтобы не мигала используй технологию спрайтов.
> В любом учебнике по Паскалю про них написанно

Таки и в любом? Я вот ни одного такого не знаю. :(

> А вообще пользоваться левыми компонентами - признак непрофисионализма.

пАчему? И что значит левые?

> Shopot ©

Двойной буер хорошо, но лучше рисовать линии не с помощью Image.


SerJaNT   (2006-10-19 05:14:00) [4]


>  Как перетаскивать картинку, чтобы она не мигала?


doublebuffered:=true;


Shopot   (2006-10-18 23:34:00) [5]

>Благодарный слушатель
>Да к тому же мне далеко до профессионала :)

Вот поэтому начинай со стандартных компонент.
Старайся больше делать сам чем другие за тебя будут что-то делать.
Все начинали с простейшего. Бери учебник для начинающих и вперед!!!


Благодарный слушатель   (2006-10-18 21:38:00) [6]

Благодарю. Интерестно ознакомится со спрайтами.
Но по-моему "левые" компоненты тоже нужны, хотябы чтобы ознакомится с их методами программирования (с тем как они решали эту задачу).
Да к тому же мне далеко до профессионала :)


Shopot   (2006-10-18 20:41:00) [7]

Картинка чтобы не мигала используй технологию спрайтов.
В любом учебнике по Паскалю про них написанно, и в доках по
разработке игр. А вообще пользоваться левыми компонентами - признак непрофисионализма.
Посмотри в каталоге (там вообще много чего есть для начинающих
и продолжающих) C:\...\Delphi6\Demos\Swat. Это demo игры
где картинки не мигают.


Virgo_Style   (2006-10-18 20:21:00) [8]

Благодарный слушатель   (18.10.06 20:08)
PS: Вообще может кто знает FreeWare -ные компоненты или прожку для рисования блочных диаграмм? Это бы мне очень помогло!


Dia.


Наверх

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