Rambler's Top100
"Knowledge itself is power"
F.Bacon
Поиск | Карта сайта | Помощь | О проекте | ТТХ  
 Полигон
  
 

Фильтр по датам

 
 К н и г и
 
Книжная полка
 
 
Библиотека
 
  
  
 


Поиск
 
Поиск по КС
Поиск в статьях
Яndex© + Google©
Поиск книг

 
  
Тематический каталог
Все манускрипты

 
  
Карта VCL
ОШИБКИ
Сообщения системы

 
Форумы
 
Круглый стол
Новые вопросы

 
  
Базарная площадь
Городская площадь

 
   
С Л С

 
Летопись
 
Королевские Хроники
Рыцарский Зал
Глас народа!

 
  
ТТХ
Конкурсы
Королевская клюква

 
Разделы
 
Hello, World!
Лицей

Квинтана

 
  
Сокровищница
Подземелье Магов
Подводные камни
Свитки

 
  
Школа ОБЕРОНА

 
  
Арсенальная башня
Фолианты
Полигон

 
  
Книга Песка
Дальние земли

 
  
АРХИВЫ

 
 

Сейчас на сайте присутствуют:
 
  
 
Во Флориде и в Королевстве сейчас  12:12[Войти] | [Зарегистрироваться]

Обсуждение материала
Компонент "Горячая область"
Полный текст материала


Другие публикации автора: Петр Смирнов

Цитата или краткий комментарий:

«... Давным давно, в языке HTML появилась возможность задавать карты "горячих областей". Это, как правило, рисунки, на которых отмечались некоторые зоны (те самые "горячие области"), нажатие на которые приводило к нужному эффекту. Область применения подобных вещей весьма широка. Хотелось бы иметь на Delphi что-то подобное? Наверное, было бы такое сделать неплохо. Разумеется, ложить на форму WebBrowser было бы чересчур для такой простой задачи. Я предлагаю альтернативное решение - использовать предлагаемый компонент. ...»


Важно:
  • Страница предназначена для обсуждения материала, его содержания, полезности, соответствия действительности и так далее. Смысл не в разборке, а в приближении к истине :о) и пользе для всех.
  • Любые другие сообщения или вопросы, а так же личные эмоции в адрес авторов и полемика, не относящаяся к теме обсуждаемого материала, будут удаляться без предупреждения авторов, дабы не мешать жителям нормально общаться.
  • При голосовании учитывайте уровень, на который расчитан материал. "Интересность и полезность" имеет смысл оценивать относительно того, кому именно предназначался материал.
  • Размер одного сообщений не должен превышать 5К. Если Вам нужно сказать больше, сделайте это за два раза. Или, что в данной ситуации правильнее, напишите свою статью.
Всегда легче осудить сделанное, нежели сделать самому. Поэтому, пожалуйста, соблюдайте правила Королевства и уважайте друг друга.



Добавить свое мнение.




Смотрите также материалы по темам:


Комментарии жителей
Отслеживать это обсуждение

Всего сообщений: 11

18-11-2008 09:50
сообщение от автора материала
>>> что 8-битный TBitmap создаёт утечку ресурсов
Предполагается, что компонент используется в качестве основного "окна" программы. Это значит, что он создается и уничтожается один раз за все время работы программы. Утечка ресурсов при освобождении не принципиальна - Windows XP подчистит за программой везде, где нужно, а раритет, вроде Windows 98 я не особенно рассматривал (правда, MaskBlt, неправильно функционирующий в Windows 98 я все-таки переработал).


17-11-2008 08:56
На всякий случай, напомню, что 8-битный TBitmap создаёт утечку ресурсов. Исправлено, вроде, только в D2007.
 Cep


17-11-2008 01:24
сообщение от автора материала
Компонент сделан для начинающих программистов под задачу, поставленную в максимально общем виде. А для задач, поставленных в общем виде, решение не может быть сделано достаточно эффективным. Да, можно ограничить себя - только полигоны в качестве горячих областей, только области без внутренних элементов (или как в HTML - срабатывает первая кликнутая область). Но для профессиональных программистов это не является проблемой - они напишут собственное, высокоэффективное решение, эффективное именно для данного случая. Да, может быть, я пририсую к компоненту возможность задавать маску как набор полигонов. Но размер картинок это не уменьшит, а именно они (3*24 битные против 1*8 битной) - так что эффективность (в смысле расхода памяти) будет мизерная.


14-11-2008 08:01
Конечно, растёт расход памяти, но тут опять же, есть а) PNG8 б) GIF.
Они в таком виде существуют только на диске, после загрузки в память они всеравно преобразуются в битмап+маска и занимают ровно столько же памяти.

В отличии от прилагаемой карты, рисунок я сделаю ЗНАЧИТЕЛЬНО быстрее.
А как же масштабирование? На одном мониторе форма не поместится на экран, на другом будет слишком мелким изображение... Регионы же, масштабировать можно без потерь и на лету. Да и как правило такие "маски" строятся лишь один раз на протяжении всего проекта, и иногда лишь корректируются.

Метод всем хорош, но а) требует внешнего редактора......
Надо заметить, что метод с битмапом так же требует внешнего редактора.

>>> откуда берутся утилиты требующие на диске 160Мб места
Это Вы про что, про программы, которые могут быть написаны с использованием моего компонента?

Я про такой подход в целом. Как впрочем и про использование калькулятора в качестве молотка.
То что есть избыток ресурсов, не означает что их нужно непременно использовать но чтобы побыстрее сделать и отдать.


13-11-2008 09:23
я бы все же выбрал вектоную графику и регионы, а не битмап. Ну, жалко мне памяти. ПМСМ еще не известно, что реально будет больше отъедать. Количество оперативки, да и дисковой памяти растёт семимильными шагами, а вот количество хэндлов постоянно: 10000.
 Cep


13-11-2008 09:02
Как то раз один парень, считавший себя программистом, доказывал мне преимущество какой-то навороченной библиотеки, в которой есть возможность создавать кнопки произвольной формы. На что я возразил в том ключе, что в этом нет ничего сложного. И в качесте доказательства за 10 минут написал программу, в которой для примера была нарисована клавиша Enter с клавиатуры (типа, с "загогулиной"). Парнишка сначала ее понажимал мышкой а затем, чтобы меня уесть, кликнул мышкой в пределах BoundsRect но не на кнопке, а на фоне. Он уже предвкушал, как выскажет мне все о моих кривых руках, но был разочарован: кнопка не нажалась.

Думаю, не стоит говорить, что был использован именно этот прием как наиболее простой в реализации.

В общем, прием имеет право на существование. Например, в приложениях, имеющих одну слоожную навороченную форму. Но для программного комплекса в котором имеется много форм и во всех должны использоваться горячие области, я бы все же выбрал вектоную графику и регионы, а не битмап. Ну, жалко мне памяти.

Да, потребуются специальные инстументы для задания областей. Ну, так мы программитсы или где? Неужели графредактор простенький для себя не напишем? ;-) Хотя я встречал решения, когда сложная кривая область апроксимировалась обычной ломаной с относительно небольшим количеством вершин: точность была не очень, но для работы хватало.
 Geo


12-11-2008 22:30
"Ложить" - очень показательный признак. Не стоит недооценивать замечание.


12-11-2008 20:09
Дорогой сэр! Отличная идея (хотя и использовавшаяся в старых играх в чуть другом виде) использовать цвет пикселя для определения региона клика. Офигенная идея. Мы в своих проектах используем собственный редактор, который позволяет накликивать точки, сохраняя их массив, загружать в игре, и создавать средствами Windows API регионы сложной формы. Метод всем хорош, но а) требует внешнего редактора б) очень сложно согласовывать программиста с дизайнером в) есть сложности при определении регионов  с дырками и вложенных регионов.
Ваша технология же проста и логична. Спасибо за идею. Уверен, масса геморроя уходит - дизайнер сможет рисовать маски САМ, и сразу тестировать их. Конечно, растёт расход памяти, но тут опять же, есть а) PNG8 б) GIF.


12-11-2008 14:33
сообщение от автора материала
>>> то зачем хранить маску когда область можно задавать полигонами
Смысл именно в том, чтобы задавать области сколь угодно сложной формы. Хоть огурец, как показано в приведенном примере. Без лишнего, извините, геморроя. В отличии от прилагаемой карты, рисунок я сделаю ЗНАЧИТЕЛЬНО быстрее. И будет он нагляднее (для программиста). И занимает он немного места - 8 битного цвета, 256 областей Вам выше крыши хватит.
>>> Аффтар, не ложить, а класть!
Засавывать, запихивать и впаривать! Креатифф гениален... а вообще, я не сторонник разводить на страницах Королевства филиал Удава.
>>> откуда берутся утилиты требующие на диске 160Мб места
Это Вы про что, про программы, которые могут быть написаны с использованием моего компонента? Так извините меня, Эйнштейн тоже не думал, что его работы будут использованы для разрушения Хиросимы и Нагасаки.


12-11-2008 13:07
>> Разумеется, ложить на форму WebBrowser было бы чересчур для такой простой задачи. Я предлагаю альтернативное решение — использовать предлагаемый компонент

Аффтар, не ложить, а класть! Пешы исчо!!!
Сообщение не подписано


12-11-2008 03:37
Теперь понятно откуда берутся утилиты требующие на диске 160Мб места, когда как реально уложится в 1-2Мб....

Конечно хорошая идея, но реализация... всетаки, согласитесь если делать это все константами, то зачем хранить маску когда область можно задавать полигонами? а сами изображения простыми эффектами обрабатывать на лету, тогда можно обойтись одной единственной картинкой, которую собственно и надо выводить.


Добавьте свое cообщение

Вашe имя:  [Войти]
Ваш адрес (e-mail):На Королевстве все адреса защищаются от спам-роботов
контрольный вопрос:
"Мы с тобой одной крови — ты и я!". Чьи это заветные слова?
в качестве ответа на вопрос или загадку следует давать только одно слово в именительном падеже и именно в такой форме, как оно используется в оригинале.
Надоело отвечать на странные вопросы? Зарегистрируйтесь на сайте.
Текст:
Жирный шрифт  Наклонный шрифт  Подчеркнутый шрифт  Выравнивание по центру  Список  Заголовок  Разделительная линия  Код  Маленький шрифт  Крупный шрифт  Цитирование блока текста  Строчное цитирование
  • вопрос Круглого стола № XXX

  • вопрос № YYY в тесте № XXX Рыцарской Квинтаны

  • сообщение № YYY в теме № XXX Базарной площади
  • обсуждение темы № YYY Базарной площади
  •  
     Правила оформления сообщений на Королевстве
      
    Время на сайте: GMT минус 5 часов

    Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter.
    Функция может не работать в некоторых версиях броузеров.

    Web hosting for this web site provided by DotNetPark (ASP.NET, SharePoint, MS SQL hosting)  
    Software for IIS, Hyper-V, MS SQL. Tools for Windows server administrators. Server migration utilities  

     
    © При использовании любых материалов «Королевства Delphi» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
    Все используемые на сайте торговые марки являются собственностью их производителей.

    Яндекс цитирования