Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.04.30;
Скачать: CL | DM;

Вниз

Region Maker - Окна Произвольной Формы | Создаём Утилиту   Найти похожие ветки 

 
antonn ©   (2006-04-01 07:13) [80]

DevilDevil ©   (01.04.06 2:46) [79]
P.S. жалко, что народ почему-то так и не понял, что моя утилита как раз и предназначена для упрощения программирования таких прикольных программ

ну какое упрощение? в пайнте (или в чем либо помощнее) создается битовая маска, сжиматся zlib"ом и пихается в ресурс. при запуске находится ресурс, расжимается и грузится во временный битмап, далее пробегаем по пикселям и комбинируем регион. Действия эти не так уж и сложны... По крайней мере я так и поступаю со всеми "своими" ресурсами.
А битовая маска перед регионом имеет огромный плюс - ее можно не геморройно изменять в процессе работы программы, и, соотвественно, менять регион.


 
GrayFace ©   (2006-04-01 08:27) [81]

KSergey ©   (29.03.06 9:38) [10]
RLE?

Нее. RLE - это криво. Лучше по-своему.

Но нафиг делать dll и программу Region Maker? Это же тихий ужас! Надо делать обычный компонент с загрузкой битмэпки для региона (который будет хранится в компактном формате).
А вообще, проект слишком маленький, чтобы его несколько людей разрабатывало.


 
DevilDevil ©   (2006-04-01 08:42) [82]

А битовая маска перед регионом имеет огромный плюс - ее можно не геморройно изменять в процессе работы программы, и, соотвественно, менять регион.

такая возможность будет, читай лучше.
хранение в файле удобно скоростью и размером.

Но нафиг делать dll и программу Region Maker? Это же тихий ужас! Надо делать обычный компонент с загрузкой битмэпки для региона (который будет хранится в компактном формате).

то же самое

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


 
OSokin ©   (2006-04-01 21:04) [83]

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


 
GrayFace ©   (2006-04-04 09:32) [84]

> то же самое
Не понял.

> это на данный момент он маленький. А чтобы был удобный и
> функциональный, надо больше

Чтобы он был удобный надо меньше.


 
DevilDevil ©   (2006-04-04 20:06) [85]


> GrayFace ©   (01.04.06 08:27) [81]

По поводу битмапки: такие компоненты уже есть, они медленны и занимаю много места (даже в однобитовом формате пикселя). Хотя быстрое получение региона в рантайм тоже необходимо, и, в дальнейшем, будет поддержано в модуле. От идеи dll я отказался. Прочитай мои ответы ветки, если возникнут вопросы


 
GrayFace ©   (2006-04-05 12:27) [86]

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


 
mlm68 ©   (2006-04-05 21:39) [87]

Зачем непрямоугольные формы на прямоугольном мониторе?
Прямоугольные намного приятнее ИМХО.


 
Ketmar ©   (2006-04-05 23:32) [88]

>DevilDevil ©   (31.03.06 01:52) [46]
apLib не мой, а Jibz"а. http://www.ibsensoftware.com/
WDXPack тоже от Jibza, но дать не могу в силу лицензионных ограничений. жмут примерно одинаково (WDXPack чуть-чуть похуже, зато в исходниках %-).

по поводу кода: в апи есть функция GetFileSize(). %-) всё-всё, больше не буду -- см. ниже.

тесты: WDXPack сжал "гипер" в 6379 байтиков. после некоторой оптимизации структуры она (структура) в непожатом виде стала занимать ~2 кб. в пожатом -- ~1.5.

вопрос: есть ли смысл заморачиваться с компрессией?

оценку качества кода я не буду делать. предположу, что автор его сваял за 5 минут -- просто чтобы показать алгоритм.


 
DevilDevil ©   (2006-04-06 00:50) [89]

GrayFace ©   (05.04.06 12:27) [86]
Введи тип регион, зарегестрируй на него редактор, создающий регион из битмэмки и все. А хранишь ты по строкам со "схлапыванием" повторяющихся цепочек?


На сегодняшний день моя утилита отстаёт от твоего варианта на шаг регистрации формата *.rgn, делается это за 10 минут. Планирую сделать намного функциональнее, но, похоже, это мало кого интересует, а одному не справиться. Все алгоритмы сжатия 2цветных изображений на RLE основе

тесты: WDXPack сжал "гипер" в 6379 байтиков. после некоторой оптимизации структуры она (структура) в непожатом виде стала занимать ~2 кб. в пожатом -- ~1.5.
Распиши, пожалуйста, по подробнее, о какой структуре идёт речь

оценку качества кода я не буду делать. предположу, что автор его сваял за 5 минут -- просто чтобы показать алгоритм.

обижаешь. Прошло много времени, прежде, чем додумался до именно этого алгоритма, пару дней писал в тетради, два дня програмил, сразу же задал тему форума. Считаю, это быстро. Всё с учётом того, что ReadRegion.pas привёл в порядок + переписал на WinAPI


 
DevilDevil ©   (2006-04-06 00:57) [90]


> Ketmar ©   (05.04.06 23:32) [88]

До модуля SaveRegion, как ты видишь,  руки не дошли


> вопрос: есть ли смысл заморачиваться с компрессией?

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


 
Ketmar ©   (2006-04-06 01:15) [91]

2DevilDevil
>о какой структуре идёт речь
о той структуре, в которой хранится информация о регионе.

>Прошло много времени, прежде, чем додумался до именно этого алгоритма
так никто не спорит с тем, сколько там прошло. просто код производит впечатление "сырого".

>зачем ... KOL
имо там, где есть скинованые формы, лишние пару кб никакой роли не играют.

>в твоём случае это не понадобилось
неправда. в ТВОЁМ случае. ТОБОЙ приведённом.

>существует спортивный интерес
так с этого и начинал бы.


 
antonn ©   (2006-04-06 09:48) [92]

DevilDevil ©   (06.04.06 0:57) [90]
Для пользователя разницы использования утилиты нет, а пару сэкономленных килобайт могут быть приятны.

В машиностроении (да и думаю не только в ней) при создании и внедрении чего либо есть такая штука, как "техническое предложение". В нем обычно описывают плюсы "объекта", область применения и, главное, обоснование целесообразности внедрения. Так вот, попробуйте прикинуть ТП применительно к своей программе. Только не обманываться "простотой и легкостью создания непрямоугольных окошек", это, вообщето, не так уж и трудно. На мой взгляд, никакой простоты и автоматизации для "обычного" пользователя она не несет, в виду того, что это отдельный продукт (с управления которым нужно разобраться), главная направленность - регионы, которые для скинабельного интерфейса почти не применяются, а где еще они нужны, мне так и не сказали.
Для скинованного окна разница в размере 2-5Кб разницы, обычно, никакой не несет. Куда важнее предусмотреть для разработчика самого скина легкость его создания (скина). Поэтому можно поступить проще - использовать 32х битный битмап, в котором альфакал и является маской (плавной или "однобитной" - не важно), и сразу является "лицом" приложения, изготовить такой битмап проблем нет - фотошоп/корел есть почти у всех, кто увлекается "рисованием" (а в последних версиях появился вообще TransparentColor у формы, который сам задает регион по определенному цвету - хватит и самого "обычного" битмапа, только положить на форму его). Дальше нужен только пакер (или вообще ненужен, если OpenSource:)), zlib справляется хорошо, т.к. файл скина обычно вмещает и картинки и данные для их использования. А для передачи по сети есть архиваторы. Думаю, с хранением на винчестере проблем нет, поэтому увлекаться с упаковной смысла нет. А теперь представьте, что разработчику скинов нужно будет осваивать (и использовать, вместо привычного корела) ваш продукт - лишняя суета, заморачиваться с какимим то регионами...
Т.ч. "смените цель" вашего проекта, на "нестандартные окна" он уже устаревает, придумайте что либо другое, где можно применить эту архивацию (а то к концу ветки возникает ощущение, что все силы были направленны на архивацию, а область ее применения не продумана изначально (т.к. сейчас она уже устарела)), если так хочется продвигать его...

> Ну, и существует спортивный интерес, почему бы и нет
ну это уже другое дело:)


 
GrayFace ©   (2006-04-06 09:58) [93]

DevilDevil ©   (06.04.06 00:50) [89]
GrayFace ©   (05.04.06 12:27) [86]
Введи тип регион, зарегестрируй на него редактор, создающий регион из битмэмки и все. А хранишь ты по строкам со "схлапыванием" повторяющихся цепочек?

На сегодняшний день моя утилита отстаёт от твоего варианта на шаг регистрации формата *.rgn, делается это за 10 минут. Планирую сделать намного функциональнее, но, похоже, это мало кого интересует, а одному не справиться. Все алгоритмы сжатия 2цветных изображений на RLE основе


Ты не понял. Не расширение, а тип в Дельфи. Создаешь тип TRegion, создаешь редактор, который просто преобразует в него картинки и вызываешь RegisterPropertyEditor. Больше ничего не надо.


 
DevilDevil ©   (2006-04-07 19:26) [94]

> antonn ©   (06.04.06 09:48) [92]
думаю, можно на "ты"


> лишние пару кб никакой роли не играют


приложения разные бывают. Зачем писать в Дельфи под WinAPI & KOL? У каждого свои причины, но в этом случае жалко каждый лишний килобайт. Разница 2-5кб невелика, в 15кб уже заметна. Когда идёт речь о мегабайтах (jpg->bmp), разница заметна, как не сжимай пакерами. Нет, я не так сдвинут на размере, как можно подумать. Именно это я имел ввиду, когда говорил о спортивном интересе.

antonn, вроде ты давал ссылку на проект, чего регионами не сделаешь. Отличный пример, но регионы не так сильно тормозят. Кроме того, в Win98 эта штука не покатит, а регионы работают.

Говоришь, регионы устаривают. Ну возьми Windows Media Player - регионы. Возьми медальку, которую дали в качестве бонуса - чистый регион.

Не для всех программ лучше использовать мою утилиту с модулями, но для многих удобна. Вообще плюсы моего методы описаны в вопросе[0]. Ну а если не захочешь пользовать утилиту, а захочешь в реал тайм из битмапа, то можно будет воспользоваться БЫСТРОЙ функцией опять таки из моего модуля (будет, пока нет). Вот так


> Ketmar ©   (05.04.06 23:32) [88]
> тесты: WDXPack сжал "гипер" в 6379 байтиков. после некоторой
> оптимизации структуры она (структура) в непожатом виде стала
> занимать ~2 кб. в пожатом -- ~1.5.

Распиши, пожалуйста, поподробнее, как тебе удалось изменив структуру получить 2кб

А вообще, у меня хорошая новость: OSokin решил мне помочь с разработкой утилиты. Надеюсь, мы напишем

> GrayFace ©   (06.04.06 09:58) [93]
Я не так крут в разработке компонентов, как ты. Напиши TRegion на основе моих модулей, будет лучше


 
Хозяин   (2006-04-07 19:37) [95]

а каков круг задачь где могут пригодится вот такие формы?


 
Gero ©   (2006-04-07 19:37) [96]

> DevilDevil ©   (07.04.06 19:26)

Эх, твою бы энергию, да в нужное русло...


 
Palladin ©   (2006-04-07 22:56) [97]

мда...

по сути, в чем проблема нормального пользователя с "регионными программами" и опчему кроют авторов матом?

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

грамотные люди никогда не построют форму из двух треугольников и одного эллипса. они не больные. и воспроинимают все со здравым смыслом.

пользователи делятся на баранов, барано-гамлетов и гамлетов.

бараны - тупо смотрят на картинку на мониторе, то что некоторые части картинки очень похожи на буквы и им в голову не приходит. (отстрел :) ) ждем "программиста"

барано-гамлеты - смотрят на картинку, но мысль прорывает оковы, правда не в том направлении, глупость совершается, ибо буквосочетание прочитано, но смысл не осознан, ждем "программиста"

гамлеты - везде тени папы, страшно, интересно, творим, жмем, думаем, неполучается, ждем "программиста", что бы исправить результаты мышлений и опытов

ни одна из этих категорий пользователей адекватно воспринять откровенно непрямоугольные окна не сможет.

я как пользователь воспринял только одно, windows media player, да и то, при работе с мышью он восстанавливает свою прямоугольную сущность, чем меня немного и примерИл с собой...


 
DevilDevil ©   (2006-04-07 23:32) [98]


> Хозяин   (07.04.06 19:37) [95]
> а каков круг задачь где могут пригодится вот такие формы?

Всё зависит от фантазии программиста. Теоретически - везде. Практически - кто где использует.


> Gero ©   (07.04.06 19:37) [96]
> Эх, твою бы энергию, да в нужное русло...

Да уж кто бы говорил. Результаты твоей энергии - вопросы типа ввв, ddd, ddddd, dd... просто блещут интелектом.
Gero, ты уже высказал своё отрицательное мнение по поводу моей утилиты. Зачем бобавлять реплики? У каждого своё мнение. Твоё выслушено и обдумано.

С уважением


> Palladin ©   (07.04.06 22:56) [97]

Благодарю за грамотную критику

Здесь есть вот какой момент. У всех разные вкусы, разное восприятие мира. Предполагаю, тебя больше устраивает (в плане дизайна) Winamp, нежели Windows Media Player. Но, поверь мне, далеко не все предпочитают первый продукт. Причём, далеко не в последнюю очередь из-за необычного дизайна. Да и вообще, грамотно продумманный дизайн продукта, бренда и других выделяющихся вещей, НИКОГДА не будет примитивен. Другими словами, там не будут использовать слишком простые шрифты, и уж тем более, если продукт располагает к необычной форме окна, разработчики этого момента не упустят


 
Ketmar ©   (2006-04-07 23:34) [99]

>DevilDevil ©   (07.04.06 19:26) [94]
хинт: редко когда окна бывают размерами поболее, чем 32768x32768. а хранят координаты в 4-х байтах. можно и дальше, но уже это даёт кое-что. и нехило даёт. раз этак в 8 -- кувырк! потому есть хорошая книга: "алгоритмы+структуры данных=программы" (выделение моё).


 
Джо ©   (2006-04-07 23:47) [100]

> Другими словами, там не будут использовать слишком простые
> шрифты

Ну, смежно же, правда :)


 
vrem   (2006-04-08 08:48) [101]

> везде тени папы, страшно, интересно,
:))


 
antonn ©   (2006-04-08 09:07) [102]

DevilDevil ©   (07.04.06 19:26) [94]

смотря какой - в висте он уже на

> antonn, вроде ты давал ссылку на проект, чего
> регионами не сделаешь. Отличный пример, но регионы не
> так сильно тормозят. Кроме того, в Win98 эта штука не
> покатит, а регионы работают.

а мой проект тормозит? (просто у меня нет:)), а про Win9x - они уходят в прошлое, а там где еще используются, обычно не до красивых форм (ну в сберкассах, в институтах(там вообще за красоту "съедят")).


> Говоришь, регионы устаривают. Ну возьми Windows Media Player - регионы.

неизвестно, что там в WMP - там используются битмапы, которые являются одновременно и маской и лицевой стороной. Регион можно на лету создать (не нужен дополнительный проект), а в Win2k и выше - вообще без регионов (с той же картинкой).


> Возьми медальку, которую дали в качестве бонуса -
> чистый регион.

а что за медалька? :)
может авторы просто не сталкивались с альфаканалами, а с регионами примеров полно. Да и для совместимости с Win9x...


> Всё зависит от фантазии программиста. Теоретически -
> везде. Практически - кто где использует.

ну а все таки? не просто регионы - а именно их хранение (ну сжатие там...), регионы можно и динамически генерить.


 
GrayFace ©   (2006-04-08 16:01) [103]

> antonn ©   (06.04.06 09:48) [92]
> (а в последних версиях появился вообще TransparentColor
> у формы, который сам задает регион по определенному цвету
> - хватит и самого "обычного" битмапа, только положить на
> форму его).

Если цвет в настройках экрана < 32bit, то такая прозрачность может не работать.


> DevilDevil ©   (07.04.06 19:26) [94]

> > GrayFace ©   (06.04.06 09:58) [93]
> Я не так крут в разработке компонентов, как ты. Напиши TRegion
> на основе моих модулей, будет лучше

Я редакторами свойств тоже пока не занимался. Но этот путь должен быть лучше и по простоте, и по удобству. Писать, наверное, не буду - и так много планов. А модуль посмотрю.

Кстати, а как у окна менять альфаканал, если это возможно?


 
Ketmar ©   (2006-04-08 16:14) [104]

>GrayFace ©   (08.04.06 16:01) [103]

> Если цвет в настройках экрана < 32bit, то такая прозрачность
> может не работать.

будет работать, будет. только надо не забывать про PixelFormat и про то, что в 15/16 bpp значение цвета зачастую совсем не такое же, как в 32 bpp. столкнулся с этим, когда делал screenmate. вроде бы очевидная вещь, а предусмотреть забыл. %-)


> как у окна менять альфаканал, если это возможно?

SetLayeredWindowAttrbutes(). и меня тут ткнули носом в функцию, которой я года 4 не мог заметить %-): UpdateLayeredWindow(). которая сложнее, но мощнее.


 
antonn ©   (2006-04-08 17:32) [105]

GrayFace ©   (08.04.06 16:01) [103]
Кстати, а как у окна менять альфаканал, если это возможно?

менять нужно альфакал у битмапа, который будет выводиться.
я scanline"ом меняю:) другого метода не знаю просто:)

Ketmar ©   (08.04.06 16:14) [104]
SetLayeredWindowAttrbutes(). и

не дай бог:) оно "сбрасывает" обратно вид формы (только равномерно прозрачный).
только через UpdateLayeredWindow(). Вот только я не допер, как обновить какой либо небольшой участок изображения? А то я храню "задник" всей формы, и обновляю весь битмап.

а вот еще вопросец - помнится когда то в св-вах рабочего стола можно было цветность выставить на 16 бит и 24. Сейчас у меня только 16/32. Как можно провернуть такое дело, что бы на 24 было тоже? а то в одной проге с использованием альфаканала странное изображение у некоторых пользователей... протестить хотел бы.


 
Ketmar ©   (2006-04-08 18:28) [106]

>antonn ©   (08.04.06 17:32) [105]
SLWA() очень часто вполне достаточно. там есть ещё ColorKey. мне для screenmate этого хватило с головой. как и для многих других вещей. %-)

а с ULW() я сам ещё не шибко. %-) судя по всему, таки только весь битмап. но тут доверять мне не советую. %-)

>
> можно было цветность выставить на 16 бит и 24

это зависит от драйверов и видюхи, afaik. если и д. и в. %-) поддерживают -- будет. иначе -- опаньки. некоторые видюхи не держат 24bpp именно драйверно (что логично: 32bpp удобнее %-).
так что тут только искать того, у кого эти штуки есть. или писать "универсал" и молиться/материться (нужное подчеркнуть %-).



Страницы: 1 2 3 вся ветка

Текущий архив: 2006.04.30;
Скачать: CL | DM;

Наверх




Память: 0.7 MB
Время: 0.469 c
15-1144303687
fast2
2006-04-06 10:08
2006.04.30
Неужели невозможно???


15-1144588919
Бугага
2006-04-09 17:21
2006.04.30
"Дефис" вместо "минуса"


2-1144922008
Роман87
2006-04-13 13:53
2006.04.30
"swf" файлы


3-1141660580
RomanH
2006-03-06 18:56
2006.04.30
Переход на Microsoft SQL Server


2-1145007717
Ezorcist
2006-04-14 13:41
2006.04.30
Boolean и bool?