![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите работать с 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.