Форум: "Прочее";
Текущий архив: 2006.04.30;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.69 MB
Время: 0.018 c